强制Celery执行队列中的下一个任务吗?

2 投票
1 回答
960 浏览
提问于 2025-04-18 11:52

有没有办法让Celery重新检查一下主队列里有没有准备好可以开始的任务?远程命令add_consumer()能解决这个问题吗?

原因是:我在同时运行几个任务,这些任务会启动多个子进程。当任务完成后,这些子进程有时候需要几秒钟才能结束,所以因为子进程已经达到了并发限制,队列里的新任务就无法启动。而且因为Celery在子进程完成后不会再检查一次,所以队列就会停滞,没有任何活跃的任务。因此,我想添加一个定期任务,让Celery重新检查一下队列,开始下一个任务。我该怎么告诉Celery呢?

1 个回答

0

来自文档的内容:

add_consumer控制命令会告诉一个或多个工作进程开始从某个队列中获取任务。这个操作是幂等的。

没错,add_consumer正是你需要的功能。你还可以把它和定时任务结合起来,定期“重新检查队列并开始下一个任务”(具体频率可以根据你的需求来定)。

撰写回答