0

我使用 Celery 和 RabbitMQ 作为代理。

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

所有工作节点将首先消费第一种类型(组)的任务,然后所有工作人员将依次消费下一种类型的任务,之前的结果作为输入,依此类推。

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

先感谢您!

4

1 回答 1

2

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

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

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

于 2012-12-18T16:57:43.050 回答