python - Celery 在具有其他文件名的文件中发现任务

标签 python django celery

我开始有很多 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/

相关文章:

python - Django、RabbitMQ 和 Celery - 为什么在我更新开发中的 Django 代码后 Celery 运行我的任务的旧版本?

python - 在Python中按属性获取列表项

python - 如何在字典中迭代和搜索?

python - 如何在 Celery 中检查任务状态?

django - 在 Django 中进行单元测试时如何跳过一段代码?

django - Facebook 的有效 OAuth 重定向 URI - Django Social Auth

django - 权限被拒绝 : '/code/celerybeat.pid'

python - 如何使用 ndarray/模型预测替换列中的缺失值

python - 循环计数器表现异常

django - 图像不存在于validated_data