您现在的位置是:首页 > 文章详情

Python中 mysql.connector.pooling的8小时超时问题

日期:2019-07-03点击:697

背景

工作中一个Python项目中在连接mysql 时使用mysql.connector.pooling,实际使用中发现个别的数据库一段时间后连接全部断开
没有任何的预兆和错误。后来发现是由于mysql的8小时超时问题

关于mysql.connector.pooling

以下是我们自己实现的数据连接池类中的代码
···

 res["host"] = self._host res["port"] = self._port res["user"] = self._user res["password"] = self._password res["database"] = self._database self.dbconfig = res pool = mysql.connector.pooling.MySQLConnectionPool( pool_name=pool_name, pool_size=pool_size, pool_reset_session=True, **self.dbconfig)

···
定位到该问题时是因为在一次调用过程中 报错说连接池已经枯竭,一开始感觉不可思议,
于是定时在mysql服务器上

mysql -e "show processlist"

发现每天夜里一定时间连接就会消息,观察时间才直到是因为8小时超时,因为此连接的都是一些查询任务,
而他们一般是业务后台使用,下班之后导致连接处于sleep状态太久

问题知道了,更让我疑惑的是难道python 的这个库没有做这件事情?事实情况就是如此,需要我们自己实现
解决的办法很简单 就是每次在获取连接的时候判断当前的连接数,不足是就重新创建

 size = self.pool._pool_size qsize = self.pool._cnx_queue.qsize() if qsize < size: need_add_size = size - qsize for x in range(need_add_size): self.pool.add_connection()
原文链接:https://yq.aliyun.com/articles/707691
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章