Postgres Broker for Dramatiq Task Queue
Project description
Dramatiq is a simple task queue implementation for Python3. dramatiq-pg provides a Postgres-based implementation of a dramatiq broker.
Features
- Super simple deployment: Single table, no ORM.
- Stores message payload and results as native JSONb.
- Uses LISTEN/NOTIFY to keep worker sync. No polling.
- Implements delayed task.
- Reliable thanks to Postgres MVCC.
- Self-healing: automatic purge of old messages. Automatic recovery after crash.
- Utility CLI for maintainance: flush, purge, stats, etc.
Note that dramatiq assumes tasks are idempotent. This broker makes the same assumptions for recovering after a crash.
Installation
- Install dramatiq-pg package from PyPI:
$ pip install dramatiq-pg psycopg2-binary
Ensure you have either psycopg2 or psycopg2-binary installed. - Init database schema with
init
command.$ dramatiq-pg init
Or adaptdramatiq-pg/schema.sql
to your needs. - Before importing actors, define global broker with a connection
pool:
import dramatiq import psycopg2.pool from dramatiq_pg import PostgresBroker dramatiq.set_broker(PostgresBroker(i)) @dramatiq.actor def myactor(): ...
Now declare/import actors and manage worker just like any dramatiq setup. An example script is available, tested on CI.
The CLI tool dramatiq-pg
allows you to requeue messages, purge old messages
and show stats on the queue. See --help
for details.
Dramatiq-pg documentation is hosted on GitLab and give you more details on deployment and operation of Postgres as a Dramatiq broker.
Integration
Django : Use django-dramatiq-pg by Curtis Maloney. It includes configuration, ORM model and database migration.
Support
If you encounter a bug or miss a feature, please open an issue on GitLab with as much information as possible.
dramatiq_pg is available under the PostgreSQL licence.
Credit
Thanks to all contributors :
- Andy Freeland
- Curtis Maloney, Django support.
- Federico Caselli, bugfixes.
- Giuseppe Papallo, bugfixes.
- Rafal Kwasny, improvements.
The logo is a creation of Damien CAZEILS
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file dramatiq_pg-0.12.0.tar.gz
.
File metadata
- Download URL: dramatiq_pg-0.12.0.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.1 Linux/6.1.0-22-amd64
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 828245fcf3700f6098ec1bff9eb13e50acff69d9c490ceeec5b69ee75d0f9fb1 |
|
MD5 | 90b356372568e965657df88d89c11c49 |
|
BLAKE2b-256 | 949885c41e5dce7aece26641b28d82fd306325c49f7a92f1ccce0866308462c5 |
File details
Details for the file dramatiq_pg-0.12.0-py3-none-any.whl
.
File metadata
- Download URL: dramatiq_pg-0.12.0-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.1 Linux/6.1.0-22-amd64
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 808bbe854d1266922570bd5afeacac0ddb93f6a7dbf68624dde2f76d72d95b58 |
|
MD5 | 44328b62daf940e0b1760167bc8e6f0e |
|
BLAKE2b-256 | 02cc59114fca251d37c980b048bdb837fbdbf02ec8d2d64dd653c78628e6afd1 |