【问题标题】:Celery and fanout - ensuring unique queue per worker?芹菜和扇出 - 确保每个工人的唯一队列?
【发布时间】:2013-12-21 15:17:41
【问题描述】:

我正在尝试在 celery 中做一些应该相当简单的事情,但看不到明显的配置。

我有一个主控主机和一些从属主机。主主机运行一个 Django 应用程序,该应用程序有时必须指示从属程序异步执行操作。任务需要所有从机执行,没有返回类型。

芹菜似乎是一个显而易见的选择。我对 RabbitMQ 的了解告诉我,我应该有一个场景,即 rMQ 上应该存在一个 fanout 交换,并且每个 celery worker 应该创建一个独占队列并绑定到这个交换。然后,master 发布的每一个任务请求都会被排队到每个 worker 中,然后被每个 slave 执行。

但是,纵观所有 celery 文档,它们似乎是针对每个执行相同任务的工作人员绑定到同一个队列的场景。这不适用于fanout 交换类型,因为fanout 只是为每个连接的队列创建一条消息。

如果我使用pika 和纯python,我只需调用channel.queue_declare(exclusive=True) 之类的东西,然后将其绑定到我的交换,确保每个客户端都有自己的队列并获得消息的副本。

你如何在芹菜中做到这一点?

【问题讨论】:

    标签: django rabbitmq celery


    【解决方案1】:

    这很短,因为我正在使用手机。请参阅 celery 文档 -> 用户指南 -> 路由。您想要 Kombu 中的 Broadcast 实体,它可以按照您的描述进行操作,并且在路由指南中有一个关于它的部分。

    【讨论】:

      猜你喜欢
      • 2017-08-15
      • 2014-06-09
      • 2023-04-08
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 2021-10-24
      相关资源
      最近更新 更多