On this page
Overview
Dramatiq is a distributed task processing library for Python. Python functions become actors, messages are sent through RabbitMQ or Redis, and independent worker processes execute background tasks outside the application request process.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Turn Python functions into actors and send messages to workers
@dramatiq.actor registers a function as a task and .send() enqueues a message through the broker. Workers import the module and process actor messages independently from the web application request process.
Sources: [2]
Best fit
Fits Python backends that want a compact background-task processing model
It is useful when a service needs broker-backed background work but prefers an API centered on actors, messages, and workers, especially when RabbitMQ or Redis already exists in the infrastructure.
Sources: [2]
Before adoption
Dramatiq 2.2.1 requires Python 3.10+; validate broker failures and async actor error paths
Dramatiq 2.2.1 requires Python 3.10 or newer and depends on an external broker process. Delivery and retry behavior should be tested against the actual RabbitMQ or Redis deployment. Version 2.2.1 fixes reference cycles from async actor exceptions and improves logging when RabbitMQ shuts down.
Official sources
- [1]Bogdanp/dramatiq — GitHub repository(2026-10-06)
- [2]Dramatiq 2.2.1 — README(2026-10-06)
- [3]Dramatiq 2.2.1 — setup.py(2026-10-06)
- [4]Dramatiq 2.2.1 release(2026-10-06)
- [5]Dramatiq LGPL-3.0-or-later license(2026-10-06)
Supplemental curator note
The actor/message/worker model keeps background processing conceptually small. Because the broker remains an external component, validate worker shutdown, reconnect, retry, and idempotency behavior before moving critical tasks onto it.
Try it in 3 steps
- 1
Install Dramatiq 2.2.1 with RabbitMQ support
Pin the reviewed release and RabbitMQ broker dependency. Python 3.10 or newer and RabbitMQ on localhost are required.
python -m pip install "dramatiq[rabbitmq]==2.2.1" - 2
Create a minimal actor
Use the actor/message pattern from the official Quickstart with a minimal task that does not require external HTTP access.
cat > example.py <<'PY' import dramatiq @dramatiq.actor def add(x, y): print(f'{x} + {y} = {x + y}') if __name__ == '__main__': add.send(2, 3) PY - 3
Start a worker and send the message
Start the worker, enqueue the message from another terminal, and confirm 2 + 3 = 5 in the worker log.
dramatiq example # In another terminal: python example.py
Growth
Growth trends · Last 30 days
5,326 Stars
Trend data is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- distributed-lock
- python
- rabbit
- redis
- task
- task-manager
- task-runner
- task-scheduler
- Stars
- 5,326
- Forks
- 384
- Watchers
- 58
- Open issues
- 67
- Contributors
- 118
- Owner type
- User
- Primary language
- Python
- License
- LGPL-3.0-or-later
- Repository last updated
- Oct 5, 2026
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- OpenTelemetry Python2,656 Stars
2 shared tag(s) · 1 shared category(s) · Same language
instrument Python traces, metrics, and logs through the OpenTelemetry API and SDK
Python - Asynq13,748 Stars
2 shared tag(s) · 1 shared category(s)
distribute background tasks to Redis-backed worker queues with retries and scheduling
Go - Sarama12,523 Stars
2 shared tag(s) · 1 shared category(s)
cover Kafka producers, consumer groups, administration, and transactions from Go
Go - kafka-go8,638 Stars
2 shared tag(s) · 1 shared category(s)
use high-level Reader and Writer APIs or drop down to a low-level pure-Go Kafka connection
Go - Lapin1,237 Stars
2 shared tag(s) · 1 shared category(s)
connect Rust services to RabbitMQ over AMQP 0-9-1 with runtime-agnostic async APIs
Rust - Dask13,932 Stars
2 shared tag(s) · Same language
scale parallel analytics with NumPy/pandas-like collections and lazy task graphs
Python
Report incorrect information
Tell us if any listing information is incorrect or outdated.