【问题标题】:Celery - How many queues?芹菜 - 有多少队列?
【发布时间】:2012-12-18 16:52:17
【问题描述】:

我使用 Celery 和 RabbitMQ 作为代理。

我的项目将包含一些长期运行的连续任务组。上一组任务的输出是下一组任务的输入。

所有的worker节点会先消费第一类(组)任务,然后所有worker会依次消费下一类任务,以之前的结果作为输入,依此类推。

我的问题是,在 Celery 中,我应该定义多少个队列? 所有任务只有 1 个队列?或者我应该为每种类型的任务使用 1 个队列? 在这种情况下使用 1 个或多个队列有什么好处?

提前谢谢你!

【问题讨论】:

    标签: celery


    【解决方案1】:

    我会将队列分开,这样就有两个。从信息流的角度来看,两个独立的队列更有意义。它还明确表示信息流过这条路径,并且任何一个队列中的所有任务都是相似的。

    所以,多队列的好处是任务在逻辑上是相互分离的。使信息流更易于遵循。如果您的任务队列变得相当大,那么考虑到多个队列的设计也会将冗余应用到系统中,因为如果需要,您可以将队列分离到不同的机器上。使用 Celery Routing,您可以分离哪些机器监听哪个队列,并将您的任务分离到其他各种机器。

    单个队列的好处是它易于使用且易于设置,但您会失去对在何处/由谁执行任务工作的细粒度控制。而且,从逻辑的角度来看,信息流并不那么清晰。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-09
      • 2019-09-03
      • 2018-02-22
      • 2014-01-26
      • 2019-12-29
      • 1970-01-01
      • 2023-01-05
      • 2016-01-28
      相关资源
      最近更新 更多