【发布时间】:2011-07-07 00:39:51
【问题描述】:
我本质上是在 celery 中使用 rabbitmq 队列作为穷人的同步。例如,当某些对象被更新(并且成本很高)时,我会根据它们的对象 ID 将它们轮询到一组 10 个队列。首先这是一种常见的模式还是有更好的方法。
其次,对于 celeryd,并发级别选项 (CELERY_CONCURRENCY) 似乎设置了所有队列中的工作人员数量。这违背了使用队列进行同步的目的,因为队列可以由多个工作人员提供服务,这意味着在对同一对象执行不同操作时可能会出现竞争条件。
有没有办法设置并发级别(或工作池选项),以便每 N 个队列有一个工作人员?
谢谢 斯里
【问题讨论】:
-
除此之外,我想避免使用不同配置运行多个 celeryd 实例的选项(即,每个实例都设置为 CELERY_CONCURRENCY = 1 并且只监听 10 个队列的一个子集)。如果这是唯一的方法,那就太糟糕了。
标签: concurrency rabbitmq celery