Celery不会自动发现所有应用中的任务

时间:2016-11-11 17:14:49

标签: django celery autodiscovery

我遇到了来自所有应用的自动发现任务的问题。

对于项目

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可以从CELERY_IMPORTS = ("proj.app_cant_find_tasks.tasks",)找到任务

这些应用对我来说完全相似。我不明白为什么芹菜只能从一个应用程序自动发现任务。 问题是,我应该在哪里解决我的问题?

1 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,在我的情况下问题是我错过了其中一个应用中的 init .py文件。