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