[英]How to temporary disconnect from MQTT topics
我实现了与经纪人的连接,例如:
应用程序.py
import paho.mqtt.client as mqtt
client = mqtt.Client(client_id='my_client', clean_session=False)
my_client = MyClient(client)
try:
my_client.start()
while True:
try:
client.loop()
except Exception as e:
my_client.start()
except Exception as e:
client.loop_stop()
exit(1)
我的客户端.py
class MyClient:
def __init__(self, mqtt=None):
self.mqtt = mqtt
def start(self):
self.mqtt.subscribe('some/topic')
我有部分代码要暂停主题收听:
self.mqtt.unsubscribe('some/topic')
后来我想重新订阅它,我想再次调用start()
,例如: self.start()
但它再也不会订阅了。 知道为什么吗?
在抛出异常后调用start()
将不起作用,因为此时客户端很可能未连接。
您应该将订阅移动到on_connect
回调,然后在客户端(重新)连接后它将始终重新订阅
至于您最初的问题,最好只设置一个 boolean 标志并使用它来处理消息,而不是在您想忽略消息时取消订阅/订阅。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.