У меня есть сценарий python, который запрашивает сервер MySQL на общем хосте Linux. По какой-то причине запросы к MySQL часто возвращают ошибку «сервер ушел»:
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
Если сразу после этого попытаться выполнить запрос еще раз, обычно это удается. Итак, я хотел бы знать, есть ли в python разумный способ попытаться выполнить запрос, и, если он не удастся, повторить попытку до фиксированного количества попыток. Наверное, я хотел бы попробовать 5 раз, прежде чем совсем отказаться.
Вот какой у меня код:
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])
Ясно, что я мог бы сделать это, выполнив еще одну попытку в разделе except, но это невероятно некрасиво, и я чувствую, что должен быть достойный способ добиться этого.