我不确定这是否可能,但我正在寻找一种在连接丢失时重新连接到 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