Skip to main content

Postgres Broker for Dramatiq Task Queue

Project description

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

Project details


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.11.0.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

dramatiq_pg-0.11.0-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file dramatiq-pg-0.11.0.tar.gz.

File metadata

  • Download URL: dramatiq-pg-0.11.0.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.10 CPython/3.7.10 Linux/5.10.0-9-amd64

File hashes

Hashes for dramatiq-pg-0.11.0.tar.gz
Algorithm Hash digest
SHA256 810cfdf5876cbf9df767d7aaf0511a89ab63e0d19be546051e6b37b37e56a012
MD5 bfdd9cfa783b381e876228fcd485ff26
BLAKE2b-256 745e5b663bf7841ca64315d3e7b54e2c393064c77e729f00f7e2267610bf6429

See more details on using hashes here.

Provenance

File details

Details for the file dramatiq_pg-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: dramatiq_pg-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 14.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.10 CPython/3.7.10 Linux/5.10.0-9-amd64

File hashes

Hashes for dramatiq_pg-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5ba2cef33ddd7410587bfbfd539a01a609fb07a7790874f5deb760ab21ef270c
MD5 c6afc9ea5897fc3263371e95076961fa
BLAKE2b-256 d1a871242e7f60d2f367a9a11181771aaad6ee0ce81cc2a8aef44d95b8cdbcf2

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page