Я подключаюсь к MySQL из своего скрипта на python, подписываюсь на тему от mqtt-брокера, и всякий раз, когда я получаю данные, я сохраняю данные.
код
import mysql.connector
connection = mysql.connector.connect(host='localhost',database='db',user='',
password='',auth_plugin='mysql_native_password')
sql_insert_query = """ #INSERT query
cursor = connection.cursor()
def on_message(client, userdata, message):
print("message received ")
msg = json.loads(message.payload.decode("utf-8"))
#processing of message
cursor.execute(sql_insert_query,processed_msg)
connection.commit()
print('inserted in db')
def on_connect(client, userdata, flags, rc):
print("Subscribing to topic","topic")
client.subscribe("topic")
broker_address=""
port = 8888
client = mqtt.Client(clean_session=True) #create new instance
client.on_connect = on_connect
client.on_message = on_message #attach function to callback
print("connecting to broker")
client.connect(broker_address, port=port) #connect to broker
client.loop_forever() #stop the loop
Так что с этимКод сохраняет данные, когда mqtt получает какое-либо сообщение. Но бывают случаи, когда mqtt не получает данные в течение более 8 часов, а затем снова начинает получать данные. В таких случаях скрипт не сохраняет данные, полученные через 8 часов или около того. Я верю, что происходит какой-то тайм-аут. Потому что когда я снова запускаю скрипт, данные сохраняются в mysql db. Может кто-нибудь помочь мне понять, что это за тайм-аут или как решить эту проблему?
Спасибо