2017-05-12 43 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