Every Python task queue that matters.
Each engine adapter is a separate Apache-2.0 pip package. Install only the ones you need. Mix them freely within a project.
Celery
The industry standard, covered end-to-end.
RQ
Lightweight Redis queue, fully instrumented.
Dramatiq
Middleware-driven Dramatiq observability.
Huey
Lightweight Redis/SQLite queue, first-class.
arq
Async Redis queue for FastAPI-era Python.
taskiq
Broker-agnostic async task framework.
Action surface at a glance
What each engine supports natively vs. what's polyfilled by the brain. Grey cells = physics-level limitations (engine has no remote-control channel or no bulk-enumeration primitive).
| Action | Celery | RQ | Dramatiq | Huey | arq | taskiq |
|---|---|---|---|---|---|---|
| submit_task | native | native | native | native | native | native |
| retry_task | native | native | native | native | polyfill | polyfill |
| cancel_task | native | native | native | native | native | - |
| bulk_retry | native | native | native | polyfill | polyfill | polyfill |
| purge_queue | native | native | native | - | - | - |
| requeue_dead_letter | native | native | native | polyfill | polyfill | polyfill |
| restart_worker | native | - | - | - | - | - |
| rate_limit | native | - | - | - | - | - |
native = engine implements it directly. polyfill = brain lowers to submit_task transparently.
Don't see your engine?
z4j's Protocol is stable and public. Each adapter is ~300 LOC. We'd love a contribution.