在芹菜中确认发布的正确方法是什么?

时间:2016-03-14 19:11:09

标签: python django rabbitmq celery

我正在考虑调整芹菜/ rabbitmq的安装,我找到了这篇文章:

http://www.lshift.net/blog/2015/04/30/making-celery-play-nice-with-rabbitmq-and-bigwig/

如果您想保证邮件传递(我这样做),它会提到设置BROKER_TRANSPORT_OPTIONS = {'confirm_publish': True}。我无法找到有关rabbitmq或芹菜的此设置的任何文档。

使用rabbitmq确认在芹菜中发布的正确方法是什么?所述功能的文档在哪里?

2 个答案:

答案 0 :(得分:4)

所以回答我自己的问题:目前没有文件。

那就是说,我在早上的大部分时间都挖了源代码并在这里找到了答案:

https://github.com/celery/py-amqp/blob/24df1032db4a566e165f736ccb6b4a15cc94bcaa/amqp/channel.py#L1770-L1776

py-amqp是芹菜最终使用的库(通过kombu - 这里有两个人包!)。 py-amqp读取该设置,并在设置confirm_publish选项时等待。这有效地使排队过程同步。

答案 1 :(得分:2)

confirm_publishhttps://github.com/celery/py-amqp使用

py-amqp选项 它强制发布阻止连接,直到从RabbitMQ收到确认。 RabbitMQ确认在此处描述:https://www.rabbitmq.com/confirms.html