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.
  • Uses plain psycopg2. No ORM.
  • Stores message payload and results as native JSONb.
  • Stores all messages in a single table, in a dedicated schema.
  • Uses LISTEN/NOTIFY to keep worker sync. No polling.
  • Requeue of failed tasks.
  • Delayed task.
  • Reliable thanks to Postgres MVCC.
  • Self-healing. Old messages are purge from time to time.
  • 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
    
  • 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.5.1.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

dramatiq_pg-0.5.1-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dramatiq-pg-0.5.1.tar.gz
  • Upload date:
  • Size: 9.0 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.5.1.tar.gz
Algorithm Hash digest
SHA256 d8b80417f5e85a566f9b9f021522b236991092f1e05b1715283a34713902dc58
MD5 18ba844587c0704cc4ee3fd4e0689d13
BLAKE2b-256 39d21195c05d59caa5379efe0f4785db6c87ec7cf4c990fd9bb4826b447fd279

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: dramatiq_pg-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 22.7 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.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 087f765488460b43cb8e70db1cd8bff5c2a97e0efa7af873af17a88485e5ed5d
MD5 e5affe0bfe7924ca30ed46d49667cbb0
BLAKE2b-256 4281da8cf87c6c46feeaeec418d0e7b91f2e8567605a9ef3f1aa35814a511b5b

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