在芹菜工作者的空的CELERY_ROUTES设置

时间:2016-04-12 16:59:52

标签: python rabbitmq celery

芹菜工作者似乎忽略了CELERY_ROUTES配置设置,但其他设置(来自同一个配置文件)却没有。如下所示,运行 app.control.inspect().conf()显示空的CELERY_ROUTES设置,但配置文件中的所有其他自定义设置都匹配app.control.inspect().conf()的输出。

celeryconfig.py的内容:

CELERY_ACCEPT_CONTENT = ['pickle']
CELERYD_PREFETCH_MULTIPLIER = 1
CELERYD_LOG_LEVEL = 'INFO'
CELERY_ROUTES = { 'psync.sync_hardlink':   {'queue': 'hardlinks'}, }

使用以下内容读取celeryconfig.py设置:

import celeryconfig
app.conf.update( **{ k:getattr( celeryconfig,k ) for k in dir( celeryconfig ) if not k.startswith('__') } )

注意:我明确没有使用config_from_object()方法,因为我从几个文件中读取配置设置,而config_from_object()会覆盖以前设置的选项,所以只使用一次。

我从外部脚本检查配置设置,如下所示:

import psync #this is my library defining `app` and celery tasks
i = psync.app.control.inspect()
pprint.pprint( i.conf() )

启动worker后,运行外部脚本输出:

{u'psync_worker@ie05': {u'BROKER_URL': u'amqp://username:********@10.10.108.4:5672/PSYNCVHOST',
                        u'CELERYD_LOG_LEVEL': u'INFO',
                        u'CELERYD_PREFETCH_MULTIPLIER': 1,
                        u'CELERY_ACCEPT_CONTENT': [u'pickle'],
                        u'CELERY_INCLUDE': [u'celery.app.builtins', u'psync'],
                        u'CELERY_ROUTES': {}}}

从输出中可以看出,有几个设置已经从默认设置更改并与celeryconfig.py中设置的设置相匹配,看起来CELERY_ROUTES也已更改,但它是空的。

为什么要尊重某些celeryconfig设置而忽略其他设置?

相关版本:

amqp==1.4.9
anyjson==0.3.3
billiard==3.3.0.20
celery==3.1.18
kombu==3.0.33

0 个答案:

没有答案