Skip to main content

Dramatiq-pg

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 adapt dramatiq-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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dramatiq_pg-0.12.0.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dramatiq_pg-0.12.0-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

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

Hashes for dramatiq_pg-0.12.0.tar.gz
Algorithm Hash digest
SHA256 828245fcf3700f6098ec1bff9eb13e50acff69d9c490ceeec5b69ee75d0f9fb1
MD5 90b356372568e965657df88d89c11c49
BLAKE2b-256 949885c41e5dce7aece26641b28d82fd306325c49f7a92f1ccce0866308462c5

See more details on using hashes here.

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

Hashes for dramatiq_pg-0.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 808bbe854d1266922570bd5afeacac0ddb93f6a7dbf68624dde2f76d72d95b58
MD5 44328b62daf940e0b1760167bc8e6f0e
BLAKE2b-256 02cc59114fca251d37c980b048bdb837fbdbf02ec8d2d64dd653c78628e6afd1

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.12.0 This release

2 files

0.11.0

2 files

0.10.0

2 files

0.9.1

2 files

0.9.0

2 files

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page