gpt4 book ai didi

python - 我可以让 Python 脚本连续监听消息队列还是必须循环?

转载 作者:行者123 更新时间:2023-12-03 05:08:01 24 4
gpt4 key购买 nike

我的目标是编写一个 Python 脚本,当 Azure 服务总线上收到消息(到它订阅的主题)时,该脚本会执行一些操作。我知道如何让它检查是否有消息,但我不清楚的是是否建议(甚至可能)在总线上连续监听,或者我是否必须循环并每 x 秒检查一次新消息。

最佳答案

理想情况下,对于像 RabbitMQ 这样的消息队列,可以编写一个使用回调方法工作的 python 脚本,您只需订阅队列的回调方法,每当消息到达队列时,就会为您调用回调。

回调函数

def callback(ch, method, properties, body):
print(" [x] Received %r" % body)

订阅队列

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

来源 - http://www.rabbitmq.com/tutorials/tutorial-one-python.html

但是,如果 Azure 服务总线不是同一种资源,您可以将服务总线视为相当于 Kafka,但由于它是 Azure 云资源,甚至任何其他云提供商都无法负担长时间运行的连接,接口(interface)主要是 poll 和 pull;作为一个好的实践,我建议您使用一种称为“退避轮询”的技术,这里是一个示例伪代码

currentBackoff = 0
maxBackOff = 10
while True:
msg = Queue.getmessage()
if msg != null:
currentBackOff = 0
print msg
queue.DeleteMessage(msg)
else:
if currentBackOff < MaxBackOff:
currentBackOff++
sleep(currentBackOff)

来源 - http://www.developerfusion.com/article/120619/advanced-scenarios-with-windows-azure-queues/

关于python - 我可以让 Python 脚本连续监听消息队列还是必须循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34972686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com