繁体   English   中英

为什么发生异常时我的 MQTT 客户端无法重新连接

[英]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个选择:

  1. 设置client.suppress_exceptions = True让客户端静默处理错误。
  2. 添加一个try/expect块来包装回调的所有内容,并处理异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM