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无关
我目前正试图确保我的 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无关