芹菜不采摘 CELERY_ALWAYS_EAGER 设置

Celery not picking CELERY_ALWAYS_EAGER settings

我是 运行宁 Django 1.8 + Celery 4.0.2 Celery 配置良好,可以 运行 我的 Django 任务在本地的 redis 后端。 但是当我尝试使用 CELERY_ALWAYS_EAGER = True 设置时, 此设置无效。其他设置不是这种情况,例如CELERY_TIMEZONE

具体来说,在 pdb 中,我看到 app.conf.task_always_eagerFalse

lib/python2.7/site-packages/celery/app/task.py(520)apply_async() So somehow CELERY_ALWAYS_EAGER is not picked up and has no effect on app.conf.task_always_eager

来自 pdb 的更多信息:

> app.conf.get('CELERY_ALWAYS_EAGER')
> True
> app.conf.task_always_eager
> False

这是什么原因造成的?我知道 Celery 4.x 正在从旧设置名称过渡到新名称,但他们仍然承诺旧设置名称仍将被使用。

请在 settings.py 中设置 CELERY_ALWAYS_EAGER = True 后重启 celery worker,看看是否有帮助。

CELERY_ALWAYS_EAGER 在 4.0+ 版本中已重命名为 CELERY_TASK_ALWAYS_EAGER

更准确地说,全部大写的设置已被弃用,有利于直接配置 celery 应用程序对象,并且有几个已命名为使用 task_worker_ 作为前缀。因为全大写设置仍然具有向后兼容性,所以这也间接重命名了全大写设置。

来自changelog

The celery_ prefix has also been removed, and task related settings from this name-space is now prefixed by task_, worker related settings with worker_.