与主(烧瓶)应用程序不同的模块中的芹菜

Celery in a different module than main (flask) app

我正在 运行使用芹菜制作 Flask 应用程序。 我有一些休息控制器调用一些 运行 与芹菜的任务。

我是否必须在具有 flask 应用程序上下文的同一个主 python 文件中定义任务?

我想在另一个模块中使用 celery,例如 "TaskRunner" 模块或类似的东西,然后让 flask 应用程序/控制器使用该服务来 call/run 实际任务。

如何将应用上下文(或 celery 实例)传递给 TaskRunner,以便我可以从那里使用 celery?并在那边使用 @celery.task 注释?

提前致谢

这里有很好的解释http://flask.pocoo.org/docs/0.12/patterns/celery/

如果这还不够让我知道,我可以给你一些额外的提示

我终于通过使用蓝图重构我的代码解决了这个问题。 然后,一旦 celery 实例已经存在,我就在我的应用程序工厂中注册 "celery tasks" 蓝图,并且它可以工作。