跳转到主要内容

Postgres代理程序用于Dramatiq任务队列

项目描述

Dramatiq-pg

Dramatiq 是一个简单的 Python3 任务队列实现。dramatiq-pg 提供了一个基于 Postgres 的 dramatiq 代理实现。

功能

  • 超简单部署:单个表,无需ORM。
  • 将消息有效负载和结果存储为原生 JSONb。
  • 使用 LISTEN/NOTIFY 保持工作同步。无轮询。
  • 实现延迟任务。
  • 由于Postgres MVCC而可靠。
  • 自愈:自动清除旧消息。崩溃后自动恢复。
  • 维护实用CLI:flush、purge、stats等。

请注意,dramatiq 假设任务是幂等的。此代理在崩溃后恢复也做出相同的假设。

安装

  • 从PyPI安装dramatiq-pg软件包
    $ pip install dramatiq-pg psycopg2-binary
    
    确保您已安装 psycopg2 或 psycopg2-binary。
  • 使用init命令初始化数据库架构。
    $ dramatiq-pg init
    
    或将 dramatiq-pg/schema.sql 调整到您的需求。
  • 在导入actor之前,使用连接池定义全局代理
    import dramatiq
    import psycopg2.pool
    from dramatiq_pg import PostgresBroker
    
    dramatiq.set_broker(PostgresBroker(i))
    
    @dramatiq.actor
    def myactor():
        ...
    

现在声明/导入actor,就像任何 dramatiq 配置 一样管理worker。有一个可用的 示例脚本,已在CI上测试。

CLI工具 dramatiq-pg 允许您重新排队消息,清除旧消息并显示队列上的统计信息。有关详细信息,请参阅 --help

Dramatiq-pg 文档托管在GitLab上,为您提供了更多关于作为Dramatiq代理的Postgres部署和操作的详细信息。

集成

Django:使用由Curtis Maloney提供的django-dramatiq-pg。它包括配置、ORM模型和数据库迁移。

支持

如果您遇到错误或缺少功能,请尽可能详细地在GitLab上创建问题

dramatiq_pg遵循PostgreSQL许可证。

致谢

感谢所有贡献者

  • Andy Freeland
  • Curtis Maloney,Django支持。
  • Federico Caselli,错误修正。
  • Giuseppe Papallo,错误修正。
  • Rafal Kwasny,改进。

标志由Damien CAZEILS创作。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

dramatiq_pg-0.12.0.tar.gz (13.7 kB 查看哈希值)

上传时间 源代码

构建分发

dramatiq_pg-0.12.0-py3-none-any.whl (15.0 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面