Python paho mqtt:如何获取所有消息并断开连接?

问题描述 投票:0回答:1

使用 python paho mqtt 客户端我想获取给定主题中的所有消息并断开与代理的连接。

我可以使用

simple()
轻松完成此操作,如下所示,但前提是我使用
msg_count
指定消息计数。如果消息计数是可预测的或者有一种方法来计算给定主题中的消息,那就没问题了。

import paho.mqtt.subscribe as mqtt_subscribe
messages = mqtt_subscribe.simple('proxies/#', msg_count=4, hostname='mqtt.somewhere.io')
for m in messages:
 print(m.payload.decode())

我还可以使用入门中所示的示例获取主题中的所有消息。但是,这使用了

loop_forever()
,我只想获取所有消息并断开连接。我尝试过其他
loop*()
功能,但没有一个提供我正在寻找的结果。

回调示例也返回所有消息,但我不清楚如何与之断开连接。

最后,我还可以使用带有超时功能的

mosquitto_sub
客户端来获取所有消息:
mosquitto_sub -h mqtt.somewhere.io -t "proxies/#"  -W 1
但我更愿意与 paho 客户端保持一致并更好地理解它。

python mqtt paho
1个回答
0
投票

给定的主题没有消息的“计数”。可能有 1 条“保留”消息,之后可能会在无限时间内发送零到无限条消息。 如果客户端有一个现有的

持久

会话,那么代理可能已经为该特定客户端排队了过去的消息(客户端在未连接时错过了),但无法获取这些消息的计数。但这取决于客户端之前是否已以高 QoS 级别连接和订阅。 这里你可能需要调整一下自己的想法。

© www.soinside.com 2019 - 2024. All rights reserved.