我的Celery模块中的任务功能数量正在快速增长,并且它们可能变得太笨重而无法包含在单个模块中。这是我几年前面对Flask的一个问题,我用Flask的蓝图解决了这个问题。基本上我想部署Flask提供的相同蓝图方法,并将我的任务分组到单个模块中,以某种方式“组合”它们,并将它们与单个RabbitMQ队列一起使用。这可能与芹菜?我希望这对每个人都有意义,因为我对芹菜很新,所以不知道该怎么说。我试过看文件,但我没有找到任何东西(这并不意味着它不在那里)。如果可能的话,我想避免使用单独的队列或经纪人。任何帮助将不胜感激。
答案 0 :(得分:1)
您可以将任务分离到模块并使用
导入它们 在配置中 CELERY_IMPORTS = ('module1.tasks','module2.tasks', )
在模块本身中,您应该导入Celery对象本身(通常命名为app)
这里的任务参数纯粹是可选的,当然。但是很多时候,当你有不同的模块时,你也希望为它们设置不同的队列
from .celery import app
@app.task(
bind=True,
queue='module1',
options={'queue':'module1'}
)
def task1_of_module1(*args, **kwargs):
pass