python总线频率_并行Python框架Celery的配置方法

2023-05-16

1、Configuration

Celery,作为一个consumer工具不需要太多的操作。它有输入和输出通道,通过输入通道连接到broker(如AMQP服务Channel)或者通过输出通道连接到结果的backend(用于获取结果,不是必须的,因为有的操作只是单向分发任务)。 这一些控制通过制定一些配置参数来完成。

缺省的配置对大多数使用场景已足够,但很多时候可能需要自己的设置。熟悉可配置的选项是一个好主意这里是参考:Configuration and defaults 。

配置可以在应用里直接设置或者通过配置模块(也是一个Python文件,而不是一个特殊的格式,真是一个好主意!)。 下面给出任务数据序列化的这个例子:CELERY_TASK_SERIALIZER :

app.conf.CELERY_TASK_SERIALIZER = 'json'

如果要配置很多参数,使用update方法:

app.conf.update(

CELERY_TASK_SERIALIZER='json',

CELERY_ACCEPT_CONTENT=['json'],  # Ignore other content

CELERY_RESULT_SERIALIZER='json',

CELERY_TIMEZONE='Europe/Oslo',

CELERY_ENABLE_UTC=True,)

2、使用配置文件

对于大的项目使用特定的配置模块是一好主意,尤其是对于周期性的任务或者任务路由等参数,不建议使用硬编码的方法。而且最好将配置文件保存在一个中心存储区域,以便于实施集中化的管理、迁移和部署,减少配置错误带来的问题。

告诉Celery的运行实例使用给定的配置文件,调用 app.config_from_object() 方法:

app.config_from_object('celeryconfig')

这个模块经常命名为“celeryconfig”, 但是你可以使用任何其它的名字,因为这其实也是一个Python模块。

这个配置模块 celeryconfig.py 必须在Python可找到得的调用路径之中, 看起来像这个样子:

celeryconfig.py:

BROKER_URL = 'amqp://'

CELERY_RESULT_BACKEND = 'amqp://'

CELERY_TASK_SERIALIZER = 'json'

CELERY_RESULT_SERIALIZER = 'json'

CELERY_ACCEPT_CONTENT=['json']

CELERY_TIMEZONE = 'Europe/Oslo'

CELERY_ENABLE_UTC = True

为了检验这个配置参数正确,没有语法错误,可以像下面这样import这个模块:

$ python -m celeryconfig

下面演示一下配置文件的强大能力,关于任务的路由, 把misbehaving放到特定的队列中去:

celeryconfig.py:

CELERY_ROUTES = {

'tasks.add': 'low-priority',}

可以设置处理的频率,下面的方式限制每分钟只处理十个任务:

celeryconfig.py:

CELERY_ANNOTATIONS = {

'tasks.add': {'rate_limit': '10/m'}}

如果使用RabbitMQ 或 Redis 作为broker, 这个rate limit也可以在运行时进行设置:

$ celery -A tasks control rate_limit tasks.add 10/m

worker@example.com: OK

new rate limit set successfully

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python总线频率_并行Python框架Celery的配置方法 的相关文章

随机推荐