Üdv!
Van egy python3 progi, ami helyi adatokat küld fel openvpn (wifi) kapcsolaton keresztül egy MySQL szerverhez.
Mivel a wifi nem egészen stabil, ezért előfordul, hogy megszakad a kapcsolat. Ilyenkor a script kivétel miatt elszáll és kilép.
A kivételt most kezelem, de csak az a kérdés, hogyan érdemes? A script ilyesmi:
#!/usr/bin/python3 import MySQLdb as sql import time print("Starting...") while True: try: # helyi adatok gyűjtése itt... # # conncetion: if ( ... ) # <---------------------------------- itt kellene vizsgálni, hogy él-e a kapcsolat!!!!! mydb = sql.connect( ... ) # SQL mycursor = mydb.cursor() mycursor.execute("INSERT INTO ...") mycursor.commit() except (Exception) as e: print("Error in progress:") print(e) finally: print("End.") time.sleep( 1 ) # end while ---------------------------------
A mydb változó csak akkor jön létre, ha létrejön a kapcsolat. Mivel tudom vizsgálni kivételkezeléskor, hogy él-e a kapcsolat?
- 660 megtekintés
Hozzászólások
Próbáltam egy ilyet:
#!/usr/bin/python3
import MySQLdb as sql
import time
print("Starting...")
mydb = None
while True:
try:
# helyi adatok gyűjtése itt...
# conncetion:
if (mydb):
print("MySQL connection is OK.")
else:
print("MySQL connection has problem! Reconnect...")
mydb = sql.connect( ... )
# SQL
mycursor = mydb.cursor()
mycursor.execute("INSERT INTO ...")
except (Exception) as e:
print("Error in MySQL connection:")
print(e)
finally:
# print("End.")
time.sleep( 1 )
# end while
Elvileg működik, mert megszakadt kapcsolat után helyreállítottam a kapcsolatot és folytatta a futást. :)
Ez így jó (elegáns, szép) megoldás lehet?
- A hozzászóláshoz be kell jelentkezni
a kerdes az hogyan szeretned kezelni a problemat?
ezt eloszor meg kellene tervezned.
addig probalkozni amig sikerul jol elkuldeni vagy hianyzo kapcsolat nelkul illetve kuldes kozbeni problemaknal kesobb majd ujra probalkozni esetleg ha gond van akkor csak kilepni es kesz.
- A hozzászóláshoz be kell jelentkezni
Egyet értek az előttem szólóval.
Amit én gondolok problémának ahhoz jó irány lehet ez a link.
https://stackoverflow.com/questions/45800460/how-to-use-mysqldb-is-conn…
- A hozzászóláshoz be kell jelentkezni
Valamilyen MQ megoldás nem tenné kezelhetőbbé a problémát?
- A hozzászóláshoz be kell jelentkezni