跳转到主要内容

Cadasta Worker Toolbox

项目描述

PyPI version Build Status Requirements Status

一组辅助工具,用于快速构建Cadasta系统的异步工作进程。

cadasta.workertoolbox.conf.Config

Config类旨在简化配置Celery设置,以确保所有工作进程都遵守Cadasta异步系统的架构要求。它本质上提供了Celery默认配置与我们系统所需配置之间的差异。该类的目标是尽量减少开发者的自定义,但在更改环境之间的配置时(例如,如果开发设置与生产设置差异很大)可能需要一些自定义。

任何Celery配置项都可以通过关键字参数或环境变量提交。通过关键字参数提交的参数应遵循Celery的新式小写设置,而不是旧式的大写设置。通过环境变量提供的参数应该是大写,并且需要以前缀CELERY_开头(例如,为了设置task_track_started值,应设置环境变量CELERY_TASK_TRACK_STARTED)。前缀可以通过提供的ENV_PREFIX关键字参数或CELERY_ENV_PREFIX环境变量进行自定义。如果为某个设置提供了关键字参数和环境变量,则关键字参数具有优先权。具有非字符串默认值的设置将使用`ast.literal_eval <https://docs.pythonlang.cn/3/library/ast.html#ast.literal_eval>`__对环境变量值进行运行,支持Python原生类型如booltuple。在调用Conf实例的repr时,只显示小写设置。

一旦应用,所有设置(以及内部变量)都将在Celery app实例的app.conf对象中可用。

提供的配置

以下是由Config类提供给Celery实例的配置。

result_backend

默认为'db+postgresql://{0.RESULT_DB_USER}:{0.RESULT_DB_PASS}@{0.RESULT_DB_HOST}/{0.RESULT_DB_NAME}',由self渲染。

broker_transport

默认为'sqs'

broker_transport_options

默认为

{
    'region': 'us-west-2',
    'queue_name_prefix': '{}-'.format(QUEUE_NAME_PREFIX)
}
task_queues

默认为以下set中的kombu.Queue对象,其中queues是配置的内部QUEUES变量,而exchange是从task_default_exchangetask_default_exchange_type设置构建的kombu.Exchange对象。

set([
    Queue('celery', exchange, routing_key='celery'),
    Queue(platform_queue, exchange, routing_key='#'),
] + [
    Queue(q_name, exchange, routing_key=q_name)
    for q_name in queues
])

注意:建议开发人员不要更改此设置。

task_routes

默认为一个函数,该函数将生成一个字典,其中routing_key与任务名点分隔的第一个索引的值匹配,而exchange设置为从task_default_exchangetask_default_exchange_type设置构建的kombu.Exchange对象。

注意:建议开发人员不要更改此设置。

task_default_exchange

默认为'task_exchange'

task_default_exchange_type

默认为'topic'

task_track_started

默认为True

内部变量

以下是可以用于自定义上述提供的配置的参数和环境变量。按照惯例,用于构建Celery配置的所有变量都应全部大写。除非另有说明,所有变量都可以通过参数或环境变量(优先考虑参数)指定。

QUEUES

该段落应包含Cadasta平台使用的所有与服务相关的队列名称数组。这些值用于构建 task_queues 配置。为了后续任务的路由,确保每个任务消费者了解所有可用的队列非常重要。因此,如果某个队列被任何服务工作者使用,则它应包含在此数组中。不需要包含 'celery''platform.fifo' 队列。默认值为模块 `__init__.py 文件 </cadasta/workertoolbox/__init__.py>` 中的 DEFAULT_QUEUES 变量内容。

PLATFORM_QUEUE_NAME

默认为 'platform.fifo'

注意:建议开发人员不要更改此设置。

CHORD_UNLOCK_MAX_RETRIES

用于设置 celery.chord_unlock 任务在放弃之前可以重试的最大次数。参见 celery/celery#2725。默认为 43200(这意味着在6小时后放弃,假设任务的 default_retry_delay 默认设置为1秒)。

SETUP_FILE_LOGGING

控制是否将默认日志配置应用于应用程序。至少包括以下内容

  • 创建一个控制台日志处理器,用于记录 INFO 级别的日志

  • 一个文件日志处理器,用于记录 INFO 级别的日志,并保存到 app.info.log

  • 一个文件日志处理器,用于记录 ERROR 级别的日志,并保存到 app.error.log

注意:这可能对调试有用,但在生产环境中,建议简单地记录到 stdout(如Celery的默认设置)

SETUP_SENTRY_LOGGING

如果设置了所有必需的环境变量,则默认为 True,否则为 False。控制是否设置 Sentry 日志处理器。需要 SENTRY_DSN 环境变量才能自动设置Sentry日志。如果满足此条件,将设置以下内容

QUEUE_PREFIX

用于填充连接的 broker_transport_optionsqueue_name_prefix 值。默认为 'dev'

RESULT_DB_USER

用于填充默认 result_backend 模板。默认为 'cadasta'

RESULT_DB_PASS

用于填充默认 result_backend 模板。默认为 'cadasta'

RESULT_DB_HOST

用于填充默认 result_backend 模板。默认为 'localhost'

RESULT_DB_PORT

用于填充默认 result_backend 模板。默认为 'cadasta'

RESULT_DB_NAME

用于填充默认 result_backend 模板。默认 '5432'

cadasta.workertoolbox.setup.setup_app

在提供配置对象给Celery应用程序之后,还需要执行其他设置步骤以正确配置应用程序。例如,配置中描述的交换机和队列必须声明。此函数调用这些必需的后续程序。通常,它由 `worker_init <http://docs.celeryproject.org/en/latest/userguide/signals.html#worker-init>`__ 信号自动调用,但对于仅作为任务生产者运行的代码库或Python壳内部的代码,必须手动调用。

它接受两个参数

  • app - 一个 Celery() 应用程序实例。 必需

  • throw - 一个布尔值,指定是否在设置失败时引发错误。否则,错误将简单地记录到模块日志器在 exception 级别。 可选,默认:True

cadasta.workertoolbox.tests.build_functional_tests

当提供Celery应用程序实例时,此函数生成一系列功能测试,以确保提供的应用程序配置和功能符合Cadasta异步系统的架构。

以下是一个示例,其中在并行 celery 模块中存在一个实例化和配置过的 Celery() 应用实例。

from cadasta.workertoolbox.tests import build_functional_tests

from .celery import app

FunctionalTests = build_functional_tests(app)

要运行这些测试,请使用您的标准测试运行器(例如 pytest)或在命令行中手动调用。

python -m unittest path/to/tests.py

贡献

测试

pip install -e .
pip install -r requirements-test.txt
./runtests

部署

pip install -r requirements-deploy.txt
python setup.py test clean build tag publish

项目详情


下载文件

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

源分布

cadasta-workertoolbox-0.6.0.tar.gz (14.6 kB 查看哈希)

上传时间

构建分布

cadasta_workertoolbox-0.6.0-py2.py3-none-any.whl (18.7 kB 查看哈希)

上传时间 Python 2 Python 3

支持者

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