Skip to main content
 首页 » 编程设计

python之Celery 的 "autodiscover_tasks"函数的作用是什么

2025年05月04日13yjmyzz

我想知道 Celery 的 autodiscover_tasks 函数的用途是什么。我正在使用 Celery 4.1.2 和 Django 2.1.4。

Celery 文档引用了导入:

foo.tasks and bar.tasks being imported

但我无法理解这是如何工作的。

我在 GitHub 上找到的所有示例 including this one from the Official Celery repo ,依赖于手动导入(即 from demoapp.tasks import add, mul, xsum)任务,即使在启动 worker 时调用 autodiscover_tasks 函数也是如此。

我想这就是 Python 的工作方式,您无法“全局”访问类,例如在 Ruby 中。

那么再一次,这个函数是做什么用的呢?我不是 Celery 的专家,也许我遗漏了什么。我唯一看到的是启动 Celery worker 时发现的任务的名称,所有这些功能都是应该做的吗?

感谢您的意见,

请您参考如下方法:

当将 celery 与 django 一起使用时,autodiscover_tasks 函数会在每个 INSTALLED_APPS 条目内的任务模块中注册所有装饰任务。例如,

如果您的 INSTALLED_APPS 设置包括 app1、app2 和 app3,celery 将自动注册任何可以通过查看 app1.tasks、 找到的修饰任务app2.tasks 和 app3.tasks。