Cadasta Worker Toolbox
项目描述
一组辅助工具,用于快速构建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原生类型如bool或tuple。在调用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_exchange和task_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_exchange和task_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日志。如果满足此条件,将设置以下内容
添加一个 Sentry信号处理器 来记录所有失败的任务
QUEUE_PREFIX
用于填充连接的 broker_transport_options 的 queue_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 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7d1728f738f50ef6f93e4533147f9a6afb0f94adbd9b67ea2aaaf93cd8e368a7 |
|
MD5 | 6c9b22e5247b977ce90ee2c088d7964e |
|
BLAKE2b-256 | 8509d5102eac188775309db712c54cb5cd8c6cd8fd371fe63eb0e845be0b3933 |
cadasta_workertoolbox-0.6.0-py2.py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 47efa1c25744f6147225b201c669d6447e0f6892e8c862d90539883e0a885851 |
|
MD5 | 03fe1c522cb979fcfb36cfd03a7bc92b |
|
BLAKE2b-256 | 8b2270cdc6433ff8b3f6d30fc00e19920e501df0ce7e30281a3b6f0b7e575d2a |