Package to facilitate queueing of jobs using Redis
Project description
Atlas Consortia JobQ
Atlas Consortia JobQ is a high-performance, Redis-backed priority queue system designed for background task management.
Table of Contents
Installation
Install the package via pip:
pip install atlas-consortia-jobq
Note: Requires a running Redis instance. Refer to the Redis documentation for instructions on installing and running Redis
Quick Start
1. Initialize the Queue
from atlas_consortia_jobq import JobQueue
# Connect to your Redis instance
jq = JobQueue(
redis_host='localhost',
redis_port=6379,
redis_db=0,
redis_password=None
)
2. Enqueue a Job
Jobs require a function, an entity_id, and optional arguments.
-
reference_id: A unique identifier generated for every specific job. This is created during the enqueing process and will be returned so the job may be referenced later.
-
entity_id: The unique identifier of the resource being processed (e.g., a UUID). This prevents the same resource from being queued multiple times.
def my_task(arg1, keyword_arg="default"):
print(f"Processing: {arg1}, {keyword_arg}")
reference_id = jq.enqueue(
task_func=my_task,
entity_id="unique_id_123",
args=["value1"],
kwargs={"keyword_arg": "value2"},
priority=2
)
Worker Management
To process jobs, you must start worker subprocesses. This is typically done in a dedicated entry-point script.
from atlas_consortia_jobq import JobQueue
if __name__ == "__main__":
jq = JobQueue(redis_host='localhost')
# This call spawns 4 worker subprocesses
jq.start_workers(num_workers=4)
Method Reference
enqueue(task_func, entity_id, args=None, kwargs=None, priority=1)
Adds a job to the queue.
-
If the entity_id is already queued, it updates the priority if the new priority is higher.
-
If the entity_id is currently being processed, it prevents duplicate enqueuing.
update_priority(identifier, new_priority)
Updates the priority of an existing job. The identifier can be a reference_id or an entity_id.
get_status(identifier)
Returns a dictionary containing the reference_id, position_in_queue, and priority. Here "identifier" can be either the reference_id or the entity_id.
get_queue_status()
Returns an overview of the entire queue, including total job counts and a breakdown by priority level.
Features
-
Atomic Operations: Uses Lua scripting to ensure job enqueuing and popping are race-condition free.
-
entity_id Deduplication: Prevents multiple jobs for the same entity_id from cluttering the queue.
-
Priority Support: Supports three priority levels (1=Highest, 2=Medium, 3=Lowest).
-
Automatic Cleanup: Manages metadata and "processing" states automatically upon job completion.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file atlas_consortia_jobq-0.1.6.tar.gz.
File metadata
- Download URL: atlas_consortia_jobq-0.1.6.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
edbdeea3170d23ee1ba2476e3273c34fab03270e2f62a42096e8dd34056dd1f1
|
|
| MD5 |
c491c3c0b513b76b724d163e7c044895
|
|
| BLAKE2b-256 |
fecaa924ee19c09e19b1705a961e2157ae55f1d3e0b80d16488d86dbfa0bd3a9
|
File details
Details for the file atlas_consortia_jobq-0.1.6-py3-none-any.whl.
File metadata
- Download URL: atlas_consortia_jobq-0.1.6-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e52e408f2ffe393ef4c3f94b932658e706fbaec8fd776a30d2156e175c884ed5
|
|
| MD5 |
ca222f38b79c000f8e173f4ad3ad4559
|
|
| BLAKE2b-256 |
b78d046ef7b69079e3c40ef4c0e99e35f44fb273ea91d5a68f8818b3a4881caf
|