Tengo un script de Python que consulta un servidor MySQL en un host Linux compartido. Por alguna razón, las consultas a MySQL a menudo devuelven un error de "el servidor se ha ido":
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
Si vuelve a intentar la consulta inmediatamente después, normalmente se realiza correctamente. Entonces, me gustaría saber si hay una forma sensata en Python de intentar ejecutar una consulta y, si falla, intentarlo nuevamente, hasta un número fijo de intentos. Probablemente me gustaría intentarlo 5 veces antes de rendirme por completo.
Este es el tipo de código que tengo:
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])
Claramente, podría hacerlo con otro intento en la cláusula excepto, pero eso es increíblemente feo, y tengo la sensación de que debe haber una manera decente de lograrlo.