У меня есть python script, который запрашивает сервер 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, но это невероятно уродливо, и у меня есть ощущение, что для достижения этого должен быть достойный способ.