5

我们在 heroku 上有一个应用程序设置,它使用 celery 来运行后台作业。celery 应用程序使用 RabbitMQ 作为代理。我们使用 heroku 的 RabbitMQ Bigwig 插件作为 AMQP 消息代理。这个附加组件指定了两个单独的 url,一个为生产者优化,另一个为消费者优化。此外,根据 RabbitMQ 文档,建议对生产者和消费者使用单独的连接。

Celery 文档没有提供一种方法来分别指定与生产者和消费者的连接。有没有办法在 celery 中指定两个不同的代理 url?

4

1 回答 1

1

不幸的是,没有一种干净的方法可以做到这一点。您可以在 上显式提供自定义代理连接task.apply_async,但这意味着放弃连接池功能。它可能对你有用。

from kombu import BrokerConnection
conn = BrokerConnection(hostname="producerbroker")

mytask.apply_async(args, kwargs, connection=conn)

最直接的解决方案可能是为生产者和工作者设置不同的配置文件。

于 2013-11-06T23:12:45.913 回答