Celery的"autodiscover_tasks"函数的目的是什么?

6
我想知道Celery的autodiscover_tasks函数的目的是什么。我正在使用Celery 4.1.2和Django 2.1.4。
Celery文档提到了导入:

导入foo.tasksbar.tasks

但我无法理解这是如何工作的。
我在GitHub上找到的所有示例包括官方Celery repo中的此示例,即使在调用autodiscover_tasks函数启动worker时,也依赖于手动导入(即from demoapp.tasks import add,mul,xsum)任务。
我猜这就是Python的工作方式,你不能像Ruby一样“全局”访问类。
那么,这个函数是干什么用的呢?我不是Celery专家,可能我错过了什么。我唯一看到的是,在启动Celery worker时发现任务的名称,这就是这个函数应该做的全部吗?
感谢您的回复,
1个回答

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接