前提条件:有一个小芹菜集群处理一些任务。每个 celery 实例运行的工人很少。一切都在烧瓶下运行。
任务:我需要能够从代码中暂停/恢复使用来自特定节点的任务。即任务可以决定当前的 celery 实例和她的所有工作人员是否应该暂停或恢复任务的消耗。
没有找到任何直接的方法来解决这个问题。有什么建议么?
提前致谢!
Control.cancel_consumer(queue, **kwargs)
(参考)是您的用例可能需要的全部。
也许更好的策略是将工作分配到多个队列中。
有一个default
所有任务开始的队列。观察默认队列的工作人员可以根据您的逻辑将子任务添加到其他活动队列中。如果您可以直接从烧瓶将任务添加到活动队列中,您可能不需要这个额外的队列。
这样,每个节点就不必担心它是暂停还是活动的。它只是消耗添加到其队列中的所有内容。除非默认工作人员添加了子任务,否则这些特定于位置的队列将是空的(因此暂停)。