Python Paho MQTT 如何在 Postgresql 关闭连接或其他方式后自动重新连接
Python Paho MQTT how to auto reconnect after Postgresql Closed connection or something else
我的MQTT订阅一般没问题,但是当服务器出现异常时,我的MQTT将无法工作,比如内存不足然后服务器杀死postgresql或一些任务,并将postgresql进入恢复模式,这会让我的MQTT的PostgreSQL连接失败(连接关闭)尽管 Postgresql 服务回来了,我的 MQTT 仍然连接失败(或关闭)。
那么,有没有自动重连的方法呢?
import threading
import paho.mqtt.client as paho_mqtt
def t1():
client = paho_mqtt.Client(client_id="*****")
client.on_connect = on_connect
client.on_message = on_message
client.username_pw_set("****", "****")
client.connect("******", ***, **)
client.loop_forever()
def on_connect(client, userdata, flags, rc):
client.subscribe(topic="********", qos=1)
print('subcriptions')
print(userdata)
print(flags)
print(rc)
thread1 = threading.Thread(target=t1)
thread1.start()
time.sleep(10)
thread1.join()
现在,我找到了解决这个问题的方法。
django.db.close_old_connections()
当我尝试异常时出现错误“连接已关闭”,然后我关闭旧连接
Django 将重新连接。
但我还在测试。
我的MQTT订阅一般没问题,但是当服务器出现异常时,我的MQTT将无法工作,比如内存不足然后服务器杀死postgresql或一些任务,并将postgresql进入恢复模式,这会让我的MQTT的PostgreSQL连接失败(连接关闭)尽管 Postgresql 服务回来了,我的 MQTT 仍然连接失败(或关闭)。
那么,有没有自动重连的方法呢?
import threading
import paho.mqtt.client as paho_mqtt
def t1():
client = paho_mqtt.Client(client_id="*****")
client.on_connect = on_connect
client.on_message = on_message
client.username_pw_set("****", "****")
client.connect("******", ***, **)
client.loop_forever()
def on_connect(client, userdata, flags, rc):
client.subscribe(topic="********", qos=1)
print('subcriptions')
print(userdata)
print(flags)
print(rc)
thread1 = threading.Thread(target=t1)
thread1.start()
time.sleep(10)
thread1.join()
现在,我找到了解决这个问题的方法。
django.db.close_old_connections()
当我尝试异常时出现错误“连接已关闭”,然后我关闭旧连接
Django 将重新连接。
但我还在测试。