我想在我的Django测试期间同步调用芹菜任务而不需要运行芹菜工作者。为实现这一点,我在settings.py中指定了CELERY_ALWAYS_EAGER=True
,但它似乎无法正常工作。所以我决定将override_settings装饰器应用于看起来像这个
@override_settings(CELERY_ALWAYS_EAGER=True, BROKER_BACKEND='memory',
CELERY_EAGER_PROPAGATES_EXCEPTIONS=True)
def test_foo(self):
...
不幸的是,这个测试仍然在我的芹菜工人中调用任务。我可以缺少什么?具体来说,我使用Django 1.10和Celery 4.0.0。
答案 0 :(得分:15)
在 celery 4.0 配置参数已更改,
在测试中尝试这些,
@override_settings(
task_eager_propagates=True,
task_always_eager=True,
broker_url='memory://',
backend='memory'
)
我遇到了同样的问题,使用新的小写名称进行了测试以及默认的芹菜设置。
以下是原始设置地图的新设置,
http://docs.celeryproject.org/en/latest/userguide/configuration.html#new-lowercase-settings
芹菜设置更改信息:
http://docs.celeryproject.org/en/latest/whatsnew-4.0.html#lowercase-setting-names