gpt4 book ai didi

python - MQTT Paho Python 可靠重新连接

转载 作者:行者123 更新时间:2023-12-03 14:19:14 32 4
gpt4 key购买 nike

我试图让我的 MQTT Paho Python 脚本保持连接(并在断开连接时重新连接)。可悲的是,我不知道该怎么做。

也就是说,机器是通过 WiFi 连接的,所以在信号丢失或 USB 加密狗被卡住的情况下,我不希望代码对我不利,所以我试图涵盖所有异常/错误。

这是我正在尝试使用的一段代码:

mqttc = mqtt.Client(machine_id, clean_session=False)
mqttc.username_pw_set(machine_id, mqtt_pwd)
mqttc.connect(mqtt_host, mqtt_port)
mqttc.subscribe(machine_id, qos=1)

def on_disconnect(client, userdata, rc):
if rc != 0:
print "Unexpected MQTT disconnection. Attempting to reconnect."
try:
mqttc.reconnect()
except socket.error:
??????
mqttc.on_connect = on_connect
mqttc.on_message = on_message
mqttc.on_disconnect = on_disconnect
mqttc.loop_forever()

我无法更进一步,因为我不知道如何让它再次连接?除非它能够第一次重新连接,否则我似乎无法进行正确的重新连接循环。

任何建议都会非常有帮助!

谢谢!

最佳答案

阅读源码(1),loop_forver()方法,调用 loop()无限阻塞循环中的方法。它是 loop()确保发布/订阅消息和 mqtt keepalive 流量由代理维护的方法。 loop_forver()如果连接中断,还会自动重新连接。
另请注意 loop_forever()阻塞直到客户端显式调用 disconnect() .因此,如果您只想在程序中运行 MQTT 客户端,这将非常有用。我更喜欢 loop_start()/loop_stop()方法。

mqttc = mqtt.Client(machine_id, clean_session=False)
mqttc.username_pw_set(mqtt_user, mqtt_pwd)
mqttc.connect(mqtt_host, mqtt_port)
mqttc.subscribe(mqtt_topic, qos=1)

def on_disconnect(client, userdata, rc):
if rc != 0:
print("Unexpected MQTT disconnection. Will auto-reconnect")

mqttc.on_connect = on_connect
mqttc.on_message = on_message
mqttc.on_disconnect = on_disconnect
mqttc.loop_forever()
不知道你为什么使用 machine_idusername_pw_set()subscribe()调用。改变了他们。

关于python - MQTT Paho Python 可靠重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36429609/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com