SAE 的 Mysql 不支持长连接,只保持30秒,导致经常出现 MySQL server has gone away
错误提示。
1
OperationalError: (2006, 'MySQL server has gone away')
我使用 tornado.database
库连接, 以下是我尝试解决的过程
修改连接时间
首先尝试修改其连接函数的 max_idle_time
参数,如下:
1
mdb = database.Connection("%s:%s"%(MYSQL_HOST_M,MYSQL_PORT), MYSQL_DB,MYSQL_USER, MYSQL_PASS, max_idle_time = 30)
还是没有修正!再翻看 tornado.database
源码
使用 _ensure_connected 以确保连接
_ensure_connected
函数的功能是先判断是否还连着?如果没有连接或连接超时了才去重新连接。
但还是不行!!
只能用 reconnect 了
reconnect
函数是先关掉当前连接后再去重连,不知道这样强制去重新连接对包里的豆豆有没有影响。
现在好了,刷新了几次还没发现2006
错误,如果你偶然发现麻烦回复一下:)
更新
_ensure_connected
在上面使用不了是因为 max_idle_time
设置问题,SAE 官方文档说SAE 的Mysql 最大能保持30秒,但在实际中远比30秒小,设置为5就能正常使用_ensure_connected
了。
本文网址: https://pylist.com/topic/2.html 转摘请注明来源