我正在运行Django 1.8 + Celery 4.0.2 Celery配置良好,可以在Redis后端本地运行Django任务。但是,当我尝试使用CELERY_ALWAYS_EAGER = True设置时,此设置无效。其他设置则不是这种情况,例如CELERY_TIMEZONE
CELERY_ALWAYS_EAGER = True
CELERY_TIMEZONE
具体来说,pdb我看到的app.conf.task_always_eager是False
pdb
app.conf.task_always_eager
False
lib / python2.7 / site-packages / celery / app / task.py(520)apply_async()因此,CELERY_ALWAYS_EAGER不会以某种方式被接收并且对app.conf.task_always_eager没有影响
来自pdb的更多信息:
> app.conf.get('CELERY_ALWAYS_EAGER') > True > app.conf.task_always_eager > False
是什么原因造成的?我知道Celery 4.x正在从旧的设置名称过渡到新的设置,但是他们仍然承诺仍然会使用旧的设置名称。
CELERY_ALWAYS_EAGER已CELERY_TASK_ALWAYS_EAGER在4.0+版本中重命名为。
CELERY_ALWAYS_EAGER
CELERY_TASK_ALWAYS_EAGER
更准确地说,不赞成使用大写字母设置,而是直接配置celery应用程序对象,并且其中的几个都已命名为可以使用task_或worker_用作前缀。因为仍然具有全大写设置的向后兼容性,所以这也间接重命名了全大写设置。
task_
worker_
从变更日志:
celery_前缀也已删除,此名称空间中与任务相关的设置现在以task_前缀,worker相关的设置带有worker_。