Я не уверен, возможно ли это, но я ищу способ повторно подключиться к базе данных mysql, когда соединение потеряно. Все соединения хранятся в очереди gevent, но я думаю, что это не имеет значения. Я уверен, что если я потрачу немного времени, я смогу придумать способ повторного подключения к базе данных. Однако я просматривал код pymysql и увидел, что в классе Connection есть метод ping, который я точно не знаю, как использовать.
Метод выглядит так, будто он переподключится в первый раз, но после этого он снова переключил флаг переподключения на False? Могу ли я использовать этот метод, или есть другой способ установить соединение, если оно потеряно? Даже если это не pymysql, как люди справляются с тем, что серверы баз данных выходят из строя и им приходится восстанавливать соединение с сервером mysql?
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