我正在运行 Django 1.8 + Celery 4.0.2
Celery 配置良好,可以在 redis 后端本地运行我的 Django 任务。
但是当我尝试使用 CELERY_ALWAYS_EAGER = True
设置时,
此设置无效。其他设置不是这种情况,例如CELERY_TIMEZONE
具体来说,在 pdb
中,我看到 app.conf.task_always_eager
是 False
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 正在从旧设置名称过渡到新名称,但他们仍然 promise 仍会使用旧设置名称。
最佳答案
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_.
关于python - celery 不采摘 CELERY_ALWAYS_EAGER 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43933022/