A Python-based batch queue manager
Project description
batch_queue2
batch_queue2 is a simple task queuing system built using Python's asyncio
. It allows you to submit, manage, and track tasks using a lightweight, XML-RPC-based interface.
Features
- Submit, list, suspend, resume, and kill tasks using command-line commands.
- Tasks can be queued, paused, or resumed based on available CPUs.
- XML-RPC server for managing task requests.
- Ability to run tasks using multiple CPUs.
- Tasks can be paused and resumed.
Requirements
- Python 3.7+
aiohttp
requests
Installation
You can install batch_queue2 from PyPI:
pip install batch_queue2
Or clone the repository from Sourcehut:
git clone https://sr.ht/~ndbecker2/batch_queue2/
cd batch_queue2
python -m pip install .
Usage
After installing, you can use the batch_queue
command to manage tasks. Below are the available options:
Starting the Server
To start the server:
batch_queue start --max-cpus 4
--max-cpus
: (Optional) Specify the maximum number of CPUs to use. Defaults to the number of CPUs available on your system.
The server will start in daemon mode by default.
Submitting a Task
To submit a task, use the submit
command:
batch_queue submit <command>
For example:
batch_queue submit sleep 10
You can also optionally specify:
--log-stdout <file>
: Redirect the standard output of the task to a file.--log-stderr <file>
: Redirect the standard error of the task to a file.
Listing Tasks
To list all tasks:
batch_queue list
This will display:
- Max CPUs available.
- Active tasks.
- Queued tasks.
- Paused tasks.
Suspending and Resuming Tasks
To suspend a running task:
batch_queue suspend <task_id>
To resume a paused task:
batch_queue resume <task_id>
Killing a Task
To kill a specific task:
batch_queue kill <task_id>
You can also optionally specify the signal to use, default is SIGTERM
.
Getting Task Information
To get detailed information about a specific task:
batch_queue id <task_id>
This command provides detailed information about the task including command, user, working directory, environment variables, and logs.
Stopping the Server
To stop the server:
batch_queue stop
This command gracefully stops the server, ensuring no tasks are left in a zombie state.
Example Workflow
-
Start the server using:
batch_queue start --max-cpus 4
-
Submit a couple of tasks:
batch_queue submit sleep 10 batch_queue submit echo "Hello World"
-
List the tasks to see the active, queued, and paused tasks:
batch_queue list
-
Suspend a running task:
batch_queue suspend 0
-
Resume a paused task:
batch_queue resume 0
-
Stop the server:
batch_queue stop
Logging
The server logs all activity to ~/batch_queue.log
. You can view the log to monitor task submissions, task status changes, server starts and stops, etc.
License
This project is licensed under the MIT License. See the LICENSE file for more details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file batch_queue2-1.0.3.tar.gz
.
File metadata
- Download URL: batch_queue2-1.0.3.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.13.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26ce6ed36ac96af4c42ebec6ce786e43ba0921a95eb9a17471a1f7f09ff38691 |
|
MD5 | 7714d68d53ab9d9dccbc0b7cbc731414 |
|
BLAKE2b-256 | b623efb68a381f5b615e50ee05e82da0bc31c0a2ac249e927152f9f5ba392059 |
File details
Details for the file batch_queue2-1.0.3-py3-none-any.whl
.
File metadata
- Download URL: batch_queue2-1.0.3-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.13.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b6e7a438877016deeb4326befb5808e1b543e93db5f2dfcb9e56ff123da39811 |
|
MD5 | c27c2434f5ac199d323ba891d042f06c |
|
BLAKE2b-256 | b0959c6b28036369e102f43fe875e452de31b0a506eead068c9443c8fe955ad3 |