我开始有很多 celery 任务,我想将它们分解成更小的文件,而不是将它们放在一个大的 tasks.py
中,但我没能得到 celery发现它们。
工作结构:
proj/
app/
tasks.py
我想工作的结构:
proj/
app/
tasks/
__init__.py
task1.py
task2.py
...
但是这里celery没有找到我的任务。我尝试设置 CELERY_IMPORTS
,但我必须指定每个文件,而且文件太多了。如果我将每个文件内容导入 __init__.py
也是如此。我希望自动发现所有任务,或者至少是任务目录中文件中的所有任务。
我当然可以将每个任务目录中的所有文件列出到 CELERY_IMPORTS
中,但这看起来很丑陋。
如果这可以用一种好的方式实现,有什么想法吗?
最佳答案
您可以在 tasks/__init__.py
文件中定义 __all__
。没有额外的 celery 设置更改。
例如:
# app/tasks/__init__.py
from .file_with_tasks_1 import task1, task2
from .file_with_tasks_2 import task3
__all__ = [
'task1',
'task2',
'task3',
]
在 celery v4.4.6 上测试
关于python - Celery 在具有其他文件名的文件中发现任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22078549/