我有两个长期运行的芹菜任务 A 和 B ,它们在远程工作程序上运行,我希望该工作程序能够运行 A < / em>和 B 同时进行,同时一次处理 A 或 B (尽管每个计划任务最终都应处理)。
在celery documentation中,他们解释了如何通过使用锁来实现这一目标,而我所见过的类似问题的所有答案也都依赖于锁。
但这不适用于我的用例,因为这涉及为等待启动的每个任务阻塞一个子进程(正如我所说的任务长时间运行,每个任务都应该运行)。例如, A 任务很有可能会阻塞所有子进程,从而阻止 B 任务运行一段时间。
有没有更好的方法来实现我想要的?
我正在将Celery与django和redis代理/后端一起使用。