由于项目最近更换了数据库,导致执行python代码连接数据库的时候,出现“超时”或“由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。”,代码执行失败了。目前使用的是polardb数据库(类似mysql)
1、 数据库连接失败:(2003, "Can't connect to MySQL server on 'XXX数据库的地址' (timed out)")
2、 (2003, "Can't connect to MySQL server on 'XXX数据库的地址' ([WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)")
1、排查了本地端口冲突的问题,连接的远程的服务器
2、和对应的服务器端工作人员排查,机器网络正常(可能网络时好时坏)
3、最后通过加上数据库重连的机制解决
由于是首次遇到这种连接数据库超时的问题,以前连接数据库很少会有这种情况,所以原始代码是不需要重连的,98%概率是成功连接上的
def connect\_dbserver(self):
"""
连接数据库
"""
try:
self.db = pymysql.connect(\*\*self.sql\_config)
self.cursor = self.db.cursor()
except pymysql.Error as e:
mylog.error("数据库连接失败:{0}".format(e))
加上重连机制的代码,失败了继续重试,一般都可以连接上数据库了
def connect\_dbserver(self):
"""
连接数据库
"""
retry\_count = 10
init\_connect\_count = 0
connect\_res = True
while connect\_res and init\_connect\_count < retry\_count:
try:
self.db = pymysql.connect(\*\*self.sql\_config)
self.cursor = self.db.cursor()
# 连接上退出循环,连接不上继续重连
connect\_res = False
except pymysql.Error as e:
mylog.info("数据库连接失败,尝试重连...,错误信息:{0}".format(e))
init\_connect\_count += 1
手机扫一扫
移动阅读更方便
你可能感兴趣的文章