TaskQueue
A Task Queue Wrapper for Dekoruma Backend
Description
TaskQueue is a Python package that provides a wrapper around Celery for task queue management. It includes automatic queue setup, Dead Letter Queue (DLQ) routing, and dynamic task execution capabilities.
With a RabbitMQ broker, set TASKQUEUE_RETRY_DELAY_SECONDS = 3600 to hold failed tasks in
retry.<queue> while workers process other tasks. Provision the retry queues before
starting workers by running the Django management command with that setting enabled:
python manage.py setup_taskqueue
A task retries three times, then follows the existing DLQ route. If the setting is absent, retry behavior is unchanged.
Retry queue and DLQ
The retry queue is a temporary waiting area. RabbitMQ keeps a failed message there for the configured delay, then returns it to its original work queue. Workers do not consume retry queues, so a delayed retry does not occupy a worker slot.
The dead-letter queue (DLQ) is the terminal failure area. A message enters
dlq.<queue> after it exhausts its retries or cannot be routed safely. It
stays there until an operator or the existing DLQ replay process handles it.
| Queue | Purpose | Leaves automatically? | Consumed by workers? |
|---|---|---|---|
retry.<queue> |
Wait before another attempt | Yes, after the RabbitMQ TTL | No |
dlq.<queue> |
Preserve an exhausted or unroutable task | No | No |
Retry flow
flowchart TD
A1[A attempt 1 fails] --> R1[retry.default waits for broker delay]
A1 --> B[B succeeds immediately]
R1 --> A2[A attempt 2 fails]
A2 --> R2[retry.default waits for broker delay]
R2 --> A3[A attempt 3 fails]
A3 --> R3[retry.default waits for broker delay]
R3 --> A4[A attempt 4 fails]
A4 --> DLQ[dlq.default]
With one worker, the observed order is:
A attempt 1 — failed
B succeeded — ran immediately
A attempt 2 — failed after broker delay
A attempt 3 — failed after broker delay
A attempt 4 — failed after broker delay
A → dlq.default
The final queue state is:
default: 0
retry.default: 0
dlq.default: 1
Deploy
- Push changes to main
- Create new TAG with version name (i.e 0.1.3)
- Check status on the Actions page on Github
Metadata
Release files for p1-taskqueue 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| p1_taskqueue-0.2.2.tar.gz | 25.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| p1_taskqueue-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.7 kB
Release files / p1_taskqueue-0.2.2.tar.gz
| Download URL | p1_taskqueue-0.2.2.tar.gz |
|---|---|
| Size | 25.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7814af52f0df19550e9add10247feb43d3cddfa5700f387292d7c7c0f73e6448
|
|
BLAKE2b-256 checksum How to use checksums |
35fc9bc548ae5b8461a577e065a596c91559db3697e8f26ac1e170dfbe2c6736
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / p1_taskqueue-0.2.2-py3-none-any.whl
| Download URL | p1_taskqueue-0.2.2-py3-none-any.whl |
|---|---|
| Size | 19.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0d313108c0f48e38d3e9017dd01a901de2ca9360229338c15f7e578e7189697d
|
|
BLAKE2b-256 checksum How to use checksums |
1d7c99ee563309c9a4f0be0cf85b6b106eef5e056e1a6ed30909636a8059c32a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|