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.

The project is not feature complete yet.

Features

  • Super simple deployment.
  • Uses plain psycopg2. No ORM.
  • Stores message payload as native JSONb.
  • Stores all messages in a single table, in a dedicated schema.
  • Uses LISTEN/NOTIFY to keep worker sync. No polling.
  • Replay pending messages on worker startup.
  • Requeues failed tasks.
  • Reliable thanks to Postgres MVCC.
  • Self-healing. Old messages are purge from time to time.

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
    
  • 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 dramatiq_pg
    import psycopg2.pool
    
    pool = psycopg2.pool.ThreadedConnectionPool(0, 4, conninfo)
    dramatiq.set_broker(dramatiq_pg.PostgresBroker(pool=pool))
    

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 show stats on the queue and purge old messages. See --help for details.

Roadmap

  • Result storage as JSONb.
  • Delayed task.

Feel free to suggest feature through support channels.

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

Uploaded Source

Built Distribution

dramatiq_pg-0.3.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dramatiq-pg-0.3.0.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.10 CPython/3.7.1 Linux/4.19.0-2-amd64

File hashes

Hashes for dramatiq-pg-0.3.0.tar.gz
Algorithm Hash digest
SHA256 70207dd160fc63088bf5703032eecf61e1c4a7a766912962a7a6c154c0aaf18b
MD5 61b9ef9a4dd20659dea4b60e025298e8
BLAKE2b-256 885587bc920f201600158ceae418bacfbbdebb88e413b9bd5d48c4e9910fe224

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: dramatiq_pg-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/0.12.10 CPython/3.7.1 Linux/4.19.0-2-amd64

File hashes

Hashes for dramatiq_pg-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2abbb7572170f4a7b3885a4859ef60654c58a898a71832786054c25aecb3a10f
MD5 a6c43aaa1b98901505b1c6e3287f79e0
BLAKE2b-256 f73bb46c36893757cb69d314d8be707164cc153cdc90e2427d43a1b02b3a8699

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