Ich bin mir nicht sicher, ob dies möglich ist, aber ich suche nach einer Möglichkeit, die Verbindung zur mysql-Datenbank wiederherzustellen, wenn die Verbindung verloren ist. Alle Verbindungen werden in einer Warteschlange gehalten, aber das sollte nicht wichtig sein, denke ich. Ich bin mir sicher, wenn ich etwas Zeit hineinlege, kann ich mir eine Möglichkeit vorstellen, mich wieder mit der Datenbank zu verbinden. Allerdings warf ich einen Blick auf den Pymysql-Code, und ich sah, dass es in der Connection-Klasse eine 'ping' -Methode gibt, von der ich nicht genau weiß, wie sie zu verwenden ist.Python mysql (mit pymysql) automatische Wiederverbindung
Die Methode sieht so aus, als ob sie das erste Mal wieder verbindet, aber danach hat sie das Reconnect Flag wieder auf False gesetzt? Kann ich diese Methode verwenden oder gibt es eine andere Möglichkeit, die Verbindung herzustellen, wenn sie verloren geht? Auch wenn es nicht pymysql ist, wie gehen Leute an, Datenbank-Server gehen und Verbindung zum mysql Server wieder herstellen müssen?
def ping(self, reconnect=True):
''' Check if the server is alive '''
if self.socket is None:
if reconnect:
self._connect()
reconnect = False
else:
raise Error("Already closed")
try:
self._execute_command(COM_PING, "")
return self._read_ok_packet()
except Exception:
if reconnect:
self._connect()
return self.ping(False)
else:
raise
nicht sicher, ob dies von Nutzen sein wird, aber einen Blick auf dieses ReconnectingConnectionPool Rezept für Twisted nehmen https://gist.github.com/powdahound/174056 –
ich es implementiert haben - https: // Kern .github.com/opensourcegeek/9822127 – opensourcegeek
Pinging vor dem Ausführen einer Abfrage wird als ein Anti-Pattern betrachtet, das Ressourcen verschwendet und unzuverlässig ist: https://www.percona.com/blog/2010/05/05/checking-for-a -Live-Datenbank-Verbindung-als schädlich / –