如何确保邮件随Pika一起发送?默认情况下,如果邮件未成功传递,则不会向您提供错误。
在此示例中,在pika确认连接已关闭之前,可以发送几条消息。
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(
host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
for index in xrange(10):
channel.basic_publish(exchange='', routing_key='hello',
body='Hello World #%s!' % index)
print('Total Messages Sent: %s' % x)
connection.close()
答案 0 :(得分:10)
使用Pika时,需要在开始发布消息之前设置channel.confirm_delivery()
标志。这很重要,以便Pika在发送下一条消息之前确认每条消息都已成功发送。但是,这会增加向RabbitMQ发送邮件所需的时间,因为在程序继续下一条消息之前需要确认传递。
channel.confirm_delivery()
try:
for index in xrange(10):
channel.basic_publish(exchange='', routing_key='hello',
body='Hello World #%s!' % index)
print('Total Messages Sent: %s' % x)
except pika.exceptions.ConnectionClosed as exc:
print('Error. Connection closed, and the message was never delivered.')
basic_publish
将返回Boolean
,具体取决于邮件是否已发送。但是,如果在传输期间关闭连接并适当地处理它,则捕获潜在的异常非常重要。在这些情况下,异常将中断程序的流程。