Mam skrypt w Pythonie, który wysyła zapytanie do serwera MySQL na współużytkowanym hoście Linux. Z jakiegoś powodu zapytania do MySQL często zwracają błąd „serwer zniknął”:
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
Jeśli spróbujesz wykonać zapytanie ponownie natychmiast później, zwykle kończy się to pomyślnie. Tak więc chciałbym wiedzieć, czy w Pythonie istnieje rozsądny sposób, aby spróbować wykonać zapytanie, a jeśli się nie powiedzie, spróbować ponownie, do ustalonej liczby prób. Prawdopodobnie chciałbym spróbować 5 razy, zanim całkowicie się poddam.
Oto rodzaj kodu, który mam:
conn = MySQLdb.connect(host, user, password, database)
cursor = conn.cursor()
try:
cursor.execute(query)
rows = cursor.fetchall()
for row in rows:
# do something with the data
except MySQLdb.Error, e:
print "MySQL Error %d: %s" % (e.args[0], e.args[1])
Oczywiście mógłbym to zrobić, podejmując kolejną próbę w klauzuli oprócz, ale to jest niesamowicie brzydkie i mam wrażenie, że musi istnieć przyzwoity sposób na osiągnięcie tego.