无法同步调用Django测试中的芹菜任务

时间:2016-11-21 14:23:21

标签: python django celery django-tests

我想在我的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。

1 个答案:

答案 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