celery中的两组group任务,如何让第二组任务等待第一组任务完成后执行
我需要按步骤执行两组任务,每组任务中的子任务是并行celery执行的,但是第二组任务需要等待第一组任务全部完成后再继续执行
from celery import group
from tasks import add
group1 = group([add.s(2, 2), add.s(4, 4),])
group2 = group([add.s(2, 2), add.s(4, 4),])
希望让groups1中的任务先并发执行,这个需要调用celery的groups1.apply_async()
,但这样会把groups1这个任务异步执行,我想让group2等待group1全部执行之后再继续执行?celery中有没有什么方法可以做到?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先来分析下你上面的需求需要几个celery服务
主线程是必须的,所以需要线程main,
因为group2是在group1后执行的,所以group1和group2应该是同步方法,执行在同一线程;又因为他们需要对主线程异步,所以他们应该是执行在一个celery中的。
所以最终的结构应该大致如下:
大致实现: