赞
踩
长连接:长连接是相对于短连接来说的。长连接指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。mysql的长连接如果长期闲置,mysql会8小时后(默认时间)主动断开该连接。
短连接:是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。
超过默认连接时间,导致连接断开,所以可以隔段时间访问一次服务端,告诉服务端我还活着,不要断开连接。
from sshtunnel import SSHTunnelForwarder
import pymysql
class Link_Mysql():
def __init__(self):
self.server = SSHTunnelForwarder(ssh_address_or_host=(服务器host ,port),
ssh_username='root',
ssh_password='password', #和下方密码相同
remote_bind_address=(数据库host, 数据库port)
)
self.server.start()
#此处host为127.0.0.1
self.conn = pymysql.connect(host="127.0.0.1", port=self.server.local_bind_port, user="root", passwd="password",
db="database")
self.cursor = self.conn.cursor()
def search_all(self, sql):
self.conn.ping(reconnect=True)
self.cursor.execute(sql)
datas = self.cursor.fetchall()
return datas
def colse_link(self):
self.server.close()
def server_restart(self):
while True:
try:
self.server.check_tunnels()
self.server._check_is_started()#检查服务是否开启,未开启会抛出错误
break
except Exception as e:
print('server_restart::',e)
self.server.restart()
self.conn = pymysql.connect(host="127.0.0.1", port=self.server.local_bind_port, user="root", passwd="password",
db="database")
self.cursor= self.conn.cursor()
def handle_data(self):
sql=''
result = self.search_all(sql)
self.server_restart()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。