2017-05-12 40 views
2

我正在运行Django 1.8 +芹菜4.0.2 芹菜配置良好,可以在redis后端本地运行我的django任务。 但是,当我尝试使用CELERY_ALWAYS_EAGER = True设置, 此设置不起作用。其他情况并非如此,例如CELERY_TIMEZONE芹菜不采摘CELERY_ALWAYS_EAGER设置

具体来说,PDB我看到app.conf.task_always_eager是假 的lib/python2.7 /站点包/芹菜/应用/所以不知何故CELERY_ALWAYS_EAGER不挑task.py(520)apply_async() 并具有从PDB app.conf.task_always_eager

更多信息没有影响:

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

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

+0

您是否已将'from .celery import app as celery_app'放入您的'proj/proj/__ init __。py'中? –

回答

5

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

更准确地说,全大写设置已被弃用,直接配置芹菜应用程序对象,并且有几个已命名空间使用task_worker_作为前缀。由于仍然存在与全部大写设置的向后兼容性,因此也间接将全部大写设置重命名。

changelog

的celery_前缀也被删除,从这个名称空间相关的任务设置,目前通过与worker_ TASK_,职工相关设置前缀。

0

请在settings.py中设置CELERY_ALWAYS_EAGER = True并重新启动芹菜工具,看看它是否有帮助。

+0

我是一个没有运行worker的事件,我有Django runserver正在运行(也重启),并期望celery任务在其中执行。 – AlexA

+0

对不起,我没有明白你的意思。你如何管理芹菜启动和运行?你是否通过主管进行管理?你运行这个命令吗?芹菜工人-A yourapp --loglevel =信息**启动芹菜或其他东西 –

+0

我设法运行芹菜工人-A yourapp --loglevel = INFO成功,它的接受任务。 现在我有一个不同的目标:帮助其他开发人员在没有芹菜的情况下运行Django和任务,以便在Django进程中立即执行任务。例如,这有助于调试任务。 – AlexA