文章内容

2019/6/21 11:32:55,作 者: 黄兵

_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on '10.0.2.5' (110)")

最近使用MySQLdb连接数据库,每天报错,具体内容如下:

_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on '10.0.2.5' (110)")

我找了一下大部分说的是localhost127.0.0.1的相关问题,但是我这边MySQL数据库不是在本机,在内网的其他机器,所以说不存在上面所说的问题。

但是每天报错,我给腾讯云发了工单,他们的回复等于没说:

让我在正式项目上抓包,这不是找死吗,过不了几个小时,估计包文件就要把硬盘撑爆。



而且出现问题的时间不固定,这个怎么抓,真是不负责任的回答。

我在这里认为他是连接数据库失败,也就是无法连接数据库,那就需要我们在连接的相关代码加入重试功能,在连接失败后,重试。

在网上找了一下,有一个不错的包:retrying

具体可以参考这篇文章:Python之retrying

简化了向几乎任何事情添加重试行为的任务。

也就是不需要你重复编写重连接代码,这个实在是太方便了。

具体用法可以看官方文档和上面的参考文章。

在此,我的代码如下:

@retry(stop_max_attempt_number=10, wait_fixed=2)
    def Conn_MySQL(self):
        """连接MySQL数据库
        链接失败,重试10次,每次间隔2s"""
        # 打开数据库连接
        db = MySQLdb.connect(host=self.mysql_host, port=self.mysql_port, user=self.mysql_user,
                             passwd=self.mysql_password,
                             db=self.mysql_database, charset=self.charset)
        return db

上面已经加了注释,不多说。

还需要观察看看是不是由于无法连接导致的问题。

看看后面还是不是继续报错。


参考资料:

1、retrying

2、Python之retrying


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - _mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on '10.0.2.5' (110)")

分享到:

发表评论

评论列表