跳转到主要内容

Django与dramatiq-pg集成

项目描述

https://badge.fury.io/py/django-dramatiq-pg.svg https://img.shields.io/pypi/pyversions/django-dramatiq-pg.svg

dramatiq-pgdjango集成。

安装

  1. 使用pip安装

    $ pip install django-dramatiq-pg
  2. 将项目添加到settings.py中的INSTALLED_APPS列表

    INSTALLED_APPS = [
        ...
        'django_dramatiq_pg',
    ]
  3. 创建一个注册表,并注册您的任务

    from django_dramatiq_pg.registry import Registry
    
    tasks = Registry()
    
    
    @tasks.actor
    def mytask():
        ...
  4. 配置

    DRAMATIQ_BROKER = {
        "OPTIONS": {
            "url": "postgres:///mydb",
        },
        "MIDDLEWARE": [
            "dramatiq.middleware.TimeLimit",
            "dramatiq.middleware.Callbacks",
            "dramatiq.middleware.Retries",
        ],
    }
    DRAMATIQ_REGISTRY = 'myapp.registry.tasks'
  5. 启动工作进程

    $ dramatiq django_dramatiq_pg.worker

此工作模块将自动发现 INSTALLED_APPS 中的任何名为 'actors' 的模块。

注册

在一个典型的 dramatiq 应用中,在注册任何任务之前会配置 Broker。然而,由于 Django 控制初始化顺序,存在一个顺序问题;actor 装饰器假设已经配置了 broker。

为了解决这个问题,django_dramatiq_pg 为您的任务提供了一个 Registry,当 Django 初始化时,将其绑定到 Broker

在您的代码中,声明一个 Registry 实例,并使用其 .actor 方法装饰您的任务函数。然后告诉 django_dramatiq_pg 使用 DRAMATIQ_REGISTRY 设置使用您的注册表。

如果您没有指定,django_dramatiq_pg 将在启动时创建一个。

注册表可以通过 django_dramatiq_pg App 实例的 .registry 属性访问。

设置

DRAMATIQ_BROKER

实例化 broker 时传递的选项字典。

DRAMATIC_BROKER['OPTIONS']

传递给 broker 的参数。

DRAMATIC_BROKER['MIDDLEWARE']

传递给 broker 的中间件类列表。

这些可以是导入字符串,或实例。

DRAMATIQ_ENCODER

默认:None

编码器类的导入路径。

DRAMATIQ_ACTORS_MODULE

默认:‘actors’

用于在 INSTALLED_APPS 中自动发现 actors 的模块名称。

DRAMATIQ_REGISTRY

任务注册实例的导入路径。

这应该指的是一个 django_dramatiq_pg.registry.Registry 实例。

这解决了在配置 broker 之前声明任务的鸡生蛋问题。

项目详情


下载文件

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

源分布

django-dramatiq-pg-1.3.2.tar.gz (7.2 kB 查看哈希值)

上传时间

构建分布

django_dramatiq_pg-1.3.2-py3-none-any.whl (7.5 kB 查看哈希值)

上传时间 Python 3

由以下支持

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