Skip to main content

Postgres Broker for Dramatiq Task Queue

Project description

dramatiq-pg − Postgres Broker for Dramatiq

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.
  • Apply dramatiq_pg/schema.sql file in your database:
    $ psql -f dramatiq_pg/schema.sql
    
  • 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.

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.

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

Uploaded Source

Built Distribution

dramatiq_pg-0.7.0-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dramatiq-pg-0.7.0.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.0b1 CPython/3.6.8 Linux/4.19.0-5-amd64

File hashes

Hashes for dramatiq-pg-0.7.0.tar.gz
Algorithm Hash digest
SHA256 b076e123e0fb96761b05fce66b595c7ebd7ba7f8720802dae44199e5828ed5bd
MD5 a4574d538158687aaee15c19780bf5fc
BLAKE2b-256 9cc0911ceb87e027b4b93d4bd5806d86aeddfbce5dc6d9b2a7d4d4e8494ee2f9

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: dramatiq_pg-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.0b1 CPython/3.6.8 Linux/4.19.0-5-amd64

File hashes

Hashes for dramatiq_pg-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 969dc6fff10d56fb529b9bf77418823b24c2b73e19e581ece4761905c539ae04
MD5 5f6111b790e29d80f05befce30e61b9c
BLAKE2b-256 244ac56777fdc0ee40001fe24ad7f82ca767ea60eaaa45a5171896d99d92bca3

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