Я не уверен, что это возможно, но я ищу способ восстановить соединение с базой данных 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