1

我正在尝试按照用户指南app.conf.humanize(with_defaults=False)中的示例打印 celery 的配置。但是我在使用时总是得到一个空字符串,我知道配置更改是有效的,因为我可以看到使用的更改。with_defaults=False.humanize(with_defaults=True)

我猜想添加配置app.conf.config_from_object('myconfig')是将配置设置加载为“默认值”,那么有没有办法以非默认方式在模块myconfig中加载配置?

这是我的源代码:

#myconfig.py
worker_redirect_stdouts_level='INFO'
imports = ('tasks',)

#tasks.py
from celery import Celery

app = Celery()
app.config_from_object('myconfig')    
print "config: %s" % app.conf.humanize(with_defaults=False)

@app.task
def debug(*args, **kwargs):
    print "debug task args  : %r" % (args,)
    print "debug task kwargs: %r" % (kwargs,)

我开始使用 celeryenv PYTHONPATH=. celery worker --loglevel=INFO并打印config: (如果我更改为with_defaults=True我得到预期的完整输出)。

4

1 回答 1

1

加载config_from_object()config_from_envvar()不被视为默认值的配置。

观察到的行为是由于此提交修复了一个错误,以响应我的错误报告,因此未来版本的 celery 将按预期工作。

from celery import Celery
app = Celery
app.config_from_object('myconfig')
app.conf.humanize()  # returns only settings directly set by 'myconfig' omitting  defaults

myconfig的python模块在哪里PYTHONPATH

#myconfig.py
worker_redirect_stdouts_level='DEBUG' 
于 2016-12-08T12:21:52.333 回答