这是我的问题的一些背景。
我们有一个转换器可以将 xml 转换为 api 调用。
我们有很多客户转换 xml,现在有些客户必须等到客户完成 100 个 xml 文件的转换。
我们有 celery 和 rabbitmq 一起工作
我想要实现的是:
将所有 celery worker 分配给一个客户,直到另一个客户发送 xml
如果队列中有另一个客户,则将一半的 celery worker 分配给另一个客户。
有人能给我指出正确的方向吗,我似乎不知道从哪里开始寻找。 对不起,我的奇怪句子英语不是我的第一语言。
最佳答案
关于您要实现的目标 - 我认为对于 Celery 来说太复杂了。
显而易见的答案是使用 concurrency
来增加 Celery worker 的数量启动 worker 时的选项。这很容易做到,您不需要更改代码。我会推荐它。
另一个不是那么容易的选项,但是可以是一个漂亮的解决方案,是使用单独的 RabbiMQ virtual host对于每个客户。 在这种情况下,我无法告诉您如何完全做到这一点,但它可以作为您的起点。
关于python - 按消费者分配 celery worker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54311791/