python - Celery 为生产者和消费者配置单独的连接

标签 python heroku rabbitmq celery

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

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

最佳答案

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

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

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

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

关于python - Celery 为生产者和消费者配置单独的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19824639/

相关文章:

python - 使用多处理时无法重现 scikit-learn 和 numpy 相关代码

python - 在python中创建数组内的数组

ruby-on-rails - 在 heroku 上找不到文件

ruby-on-rails - 如何确定在Heroku Performance dyno上运行的Puma worker 和线程的正确数量?

python - Rabbitmq hello world 连接仅适用于本地主机(python)

python - 优化函数评估缓存部分结果

python - 如何从概念上处理 python 中的异常?

heroku - 部署到 Heroku 会中断当前的 Web 进程吗?

javascript - 如何在回调函数中调用函数来更改状态?

rabbitmq - 不在 RabbitMQ 上使用默认交换的原因?