确定功能的经过时间?

时间:2017-07-04 16:29:44

标签: python timer rabbitmq

我正在使用RabbitMQ和Python从RabbitMQ服务器检索消息。如果超过5分钟并且没有收到Rabbitmq的消息,我希望该程序能够执行某些操作。

我在RabbitMQ网站上找到了示例python代码,它运行并打印收到的每条消息。我试图找出如何添加计时器,以便我可以在收到消息后超过5分钟时执行XYZ。

有关如何实现这一目标的任何想法?以下是RabbitMQ的代码:

#!/usr/bin/env python
import pika
import time

connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()

def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)        # Print out received message

channel.basic_consume(callback,
                      queue='SlackWebhook',
                      no_ack=True)

print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

1 个答案:

答案 0 :(得分:0)

您可以创建一个仅在程序中实例化一次的Singleton对象。在此对象中,您可以创建计时器。每次从RabbitMQ接收内容时,启动计时器,使其保持运行并将其重置为零。在Singleton中,你需要有一个while True循环来检查计时器,并在时间超过5分钟时触发一些动作。

基本思想是让计时器运行,每次从RabbitMQ接收时将其设置为零,并让观察者检查计时器是否经过了多长时间。实现可以使用Singleton或任何其他数据结构,这些数据结构将在整个程序中持续存在。如果您有多个线程或进程,则使用持久性数据库或内置线程安全的Python数据结构会更容易。

希望这会有所帮助。