J'ai un script python qui interroge un serveur MySQL sur un hôte Linux partagé. Pour une raison quelconque, les requêtes adressées à MySQL renvoient souvent une erreur "Le serveur est parti":
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
Si vous réessayez la requête immédiatement après, elle réussit généralement. Donc, j'aimerais savoir s'il existe un moyen raisonnable en python d'essayer d'exécuter une requête, et si cela échoue, de réessayer, jusqu'à un nombre fixe d'essais. Je voudrais probablement qu'il essaie 5 fois avant d'abandonner complètement.
Voici le type de code que j'ai:
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])
Il est clair que je pourrais le faire en faisant une autre tentative dans la clause d'exception, mais c'est incroyablement moche, et j'ai le sentiment qu'il doit y avoir un moyen décent d'y parvenir.