[英]Why my MQTT client cannot reconnect when an exception occurs
我实现了一个服务,它使用一个运行在与主线程不同的线程中的 MQTT 客户端。 我的 MQTT 客户端是一个 class,它继承自 pahoo 的 mqtt 客户端。 所以我开始循环如下:
def run(self):
logging.info("Starting MQTT Client")
self.loop_start()
self.connect(self._host, self._port, keepalive=self._timeout)
然后我向一些topis添加一些特定的回调,如下所示:
self.message_callback_add(topic, callback)
问题是当回调 function 内部发生任何异常时,MQTT 客户端的线程会下降并且不再重新连接。 有什么方法可以防止这种情况,而无需在我的所有回调周围加上 try catch 子句? 提前致谢,
看起来行为在 v1.5.1 版本中发生了变化,因此回调中的异常不再被忽略
默认情况下不再抑制回调中发生的异常。 可以选择通过设置
client.suppress_exceptions = True
来抑制它们。 关闭#365。
所以你有2个选择:
client.suppress_exceptions = True
让客户端静默处理错误。try/expect
块来包装回调的所有内容,并处理异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.