Celery的“ autodiscover_tasks”功能的目的是什么?

时间:2018-12-11 14:26:09

标签: python django celery

我想知道Celery的autodiscover_tasks函数的作用是什么。我正在将Celery 4.1.2与Django 2.1.4结合使用。

芹菜文档涉及进口:

  

foo.tasksbar.tasks被导入

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

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

我想这就是Python的工作方式,例如,您不能像Ruby中那样“全局”访问类。

然后再次说明此功能是做什么的?我不是Celery的专家,也许我错过了一些东西。我唯一看到的是启动Celery worker时发现的任务的名称,这是应该执行的所有功能吗?

感谢您的投入,

1 个答案:

答案 0 :(得分:0)

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

如果您的INSTALLED_APPS设置包括app1,app2和app3,那么celery会自动注册可以通过查看app1.tasksapp2.tasks和{{1}进行罚款的装饰任务。 }。