SQLAlchemy中无法close的问题解决

之前在使用SQLAlchemy时都是用完程序就结束了,所以并没有管连接的问题。但是这两天需要建立一个服务,以每几天访问一次的频率对数据库进行访问。

 

MySQL服务端会检测每个链接在一段时间内是否有访问。在默认值的情况下,如果28800s内没有指令,一直是Sleep的状态,那么就会把这个链接关闭。这样当下次session再次连接时,就无法找到可用的连接了。

 

找到了两个解决方案。一个是不用QueuePool,用NullPool。这样的优点在于建立连接与否都是自己控制;缺点在于高并发时频繁连接关闭损耗很大。这个帖子详细说明了QueuePool的用法。http://www.tuicool.com/articles/Ybmemy

 

第二个解决方案就是设置回收时间。http://blog.csdn.net/u013673976/article/details/45939297

如果在没有回收的情况下链接断裂,那么会返回2013错误。如果回收时间设置的很短,那么2013错误就几乎不会发生。当服务器关闭时,只需要捕获2003错误就好。

 

posted @ 2016-12-07 13:52  FRank5433  阅读(1951)  评论(0编辑  收藏  举报