【发布时间】:2017-01-17 00:03:35
【问题描述】:
Celery 相当于 multiprocessing.JoinableQueue(或 gevent.queue.JoinableQueue)?
我正在寻找的功能是能够.join()来自发布者的 Celery 任务队列,等待队列中的所有任务完成。
等待初始 AsyncResult 或 GroupResult 是不够的,因为队列会由工作人员自己动态填满。
【问题讨论】:
-
您能否澄清一下,为什么
group(*tasks) > apply > join不够?工人如何影响您的小组结果?为什么你不能处理.join结果? -
@Slam 因为那只会等待完成初始任务组。工作人员不会影响组结果,他们会将更多任务添加到队列中。我的意图是等待队列中的所有任务完成(类似于我可以
join()和JoinableQueue的方式,它会等待队列中的每个任务调用task_done())。我可能可以通过在 Redis 中创建一个额外的共享计数器和一个 pub/sub 来实现这一点,但我想知道是否有一个更清洁、更可靠的方法只使用 Celery。
标签: python queue celery python-multiprocessing gevent