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

Uploaded Source

Built Distribution

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.

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