Python MQTT异常处理

Python MQTT exception handling

我目前正试图确保我的 Python 脚本保持活动状态,无论它遇到什么情况,因此我正试图捕获所有异常并找出适当的脚本响应。

此时在我的脚本中,我正在尝试捕获连接到我的 MQTT 代理时可能发生的错误,即互联网连接不可用 (1) 通过未插入 eth0,或 ( 2) 路由器无法上网。

1 的错误消息是:

socket.gaierror: [Errno -5] No address associated with hostname

2 的错误信息是:

socket.gaierror: [Errno -2] Name or service not known

遗憾的是,我还没有去捕获这些异常。这些是我试过的:

def mqtt_listen():
        mqttc = mqtt.Client(machine_id, clean_session=False)
        mqttc.username_pw_set(machine_id, mqtt_pwd)
        mqttc.connect(mqtt_host, mqtt_port)
        mqttc.subscribe(mqttc.topic, qos=1)
        def on_connect(client, userdata, rc):
                print " Attempting to connect to MQTT"
                if rc != 0:
                        print "Unable to connect to MQTT: Connection refused. Error code (" + rc + ")"
                elif rc == 0:
                         print "Connection to MQTT established."
                else:
                         print "Unable to connect to MQTT: Socket error"

然而,似乎异常 (socket.gaierror) 不是 MQTT (paho) 库的一部分,我似乎无法捕捉到它。如果有任何帮助,我们将不胜感激!

套接字连接发生在 mqttc.connect(),您需要尝试捕获您感兴趣的异常。

on_connect回调rc参数是MQTT broker在CONNACK消息中提供的值,与sockets无关