Twisted和Pika - 如何在回复消息中添加回调?

时间:2014-11-15 23:30:04

标签: twisted pika python-pika

我正在使用鼠兔twisted protocol adapter。当我成功处理完消息后,我使用此调用向RabbitMQ发送确认:

channel.basic_ack(delivery_tag=delivery_tag) 

basic_ack调用似乎是异步触发,但是它没有返回延迟,所以我无法添加回调或错误。我现在遇到一个小问题,因为我想等待队列中的某条消息,处理它并关闭反应堆,即

channel.basic_ack(delivery_tag=delivery_tag)
reactor.stop()

当然,反应堆会在发送消息之前关闭。我通过延迟关机来解决这个问题

channel.basic_ack(delivery_tag=delivery_tag)
reactor.callLater(5, reactor.stop)

但它看起来像一个漂亮的" hacky"这样做的方式。我更愿意做类似的事情:

d = channel.basic_ack(...)
d.addBoth(lambda x: reactor.shutdown())

我错过了一些明显的东西吗?是否真的不可能将回调链接到ack调用的结尾?

1 个答案:

答案 0 :(得分:0)

所以似乎唯一的选择是等待并希望确认已成功发送