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