2016-11-11 79 views
1

我有來自所有y應用程序的自動發現任務的問題。芹菜不會自動發現來自所有應用程序的任務

對於項目

proj 
|-- settings.py 
|-- app_tasks_found 
| |-- tasks.py 
| 
|-- app_cant_find_tasks 
| |-- tasks.py 

而且以下設置

INSTALLED_APPS = [ 
    'proj.app_tasks_found', 
    'proj.app_cant_find_tasks', 
] 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings') 
from django.conf import settings 
app = Celery('proj') 
app.config_from_object('django.conf:settings') 
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) 

後,我開始芹菜工人

celery worker -l info -A proj 

它顯示app_tasks_found我唯一的任務,而不是從app_cant_find_tasks

當我嘗試調用任務app_cant_find_tasks.tasks.test_task.delay()

芹菜可從app_cant_find_tasks找到工作,如果我明確地設置CELERY_IMPORTS = ("proj.app_cant_find_tasks.tasks",)

這些應用程序完全類似的,我當然芹菜引發錯誤而。我不明白爲什麼芹菜只能從一個應用程序自動發現任務。 問題是,我應該在哪裏解決我的問題?

回答

1

我也有類似的問題,在我的情況的問題是,我錯過了初始化 .py文件的應用程序之一。

+0

我花了一些時間調試才意識到這是我的項目中的問題。這是一個非常微妙的錯誤,我很驚訝我的Django應用程序工作正常。由於'autodiscover_tasks'似乎默默地忽略了所有異常,所以我最終使用了一個我以前不得不依賴的技巧:將第n個參數的'[n.name for n在apps.get_app_configs()]'中的輸出複製粘貼爲第一個參數到'app.autodiscover_tasks(['proj.myapp1',....'proj.myapp432')',並開始評論應用程序以查看哪些應用程序阻止從其他應用程序導入任務。 – Raekkeri