如果连接空闲/长时间不消耗,请停止channel.basic_consume

时间:2016-06-17 14:54:41

标签: python rabbitmq amqp pika

我有一个用例,我想要获得pika消费者的最后空闲时间(最后消息处理时间)(pika.BlockingConnection)。
USECASE:
如果上次处理的时间大于阈值时间(例如:1小时)。我希望消费者退出或有一个回调方法来决定我需要做什么?就像向用户发送通知一样。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

pika支持timeout callback.

您可以在每封邮件收据的末尾添加此回调,保留对其的引用,并在每封邮件收据的开头删除它。

def close_connec():
    # close here

timer_id = None

def on_message(chan, method, props, body):
    if timer_id is not None:
        chan.connection.remove_timeout(timer_id)
    # process message
    timer_id = chan.connection.add_timeout(3600, close_connec)