Skip to main content

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.

comparison

Action surface at a glance

What each engine supports natively or through a safe brain-side implementation. Grey cells mark actions the current adapter does not support.

Action CeleryRQDramatiqHueyarqtaskiq
submit_task nativenativenativenativenativenative
retry_task nativenativenativenative--
cancel_task nativenativeconditionalnativenative-
bulk_retry nativenative----
purge_queue nativenativenative---
requeue_dead_letter -native----
restart_worker native-----
rate_limit native-----

native = engine implements it directly. polyfill = brain implements the action through a safe adapter contract without replaying stored redacted payloads. conditional = available only with an extra installed. Dramatiq advertises cancel only with the abort extra and a real dramatiq-abort Abortable middleware. Dramatiq and Huey cancellation is pending-only; neither interrupts running work.

Don't see your engine?

z4j's Protocol is stable and public. Existing adapters run from roughly 800 to 3,000 lines, depending on how much of the engine's control surface they can safely expose. Open a Discussion on GitHub if you want to coordinate, or jump straight to a pull request.