SAE OperationalError: (2006, 'MySQL server has gone away')错误的解决方法

SAE 的 Mysql 不支持长连接,只保持30秒,导致经常出现 MySQL server has gone away 错误提示。

MySQL server has gone away

plaintext: 2006
1
OperationalError: (2006, 'MySQL server has gone away')

我使用 tornado.database 库连接, 以下是我尝试解决的过程

修改连接时间

首先尝试修改其连接函数的 max_idle_time 参数,如下:

Python: database
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 了。

参见 轻松搭建SAE Python 本地运行环境

本文网址: https://pylist.com/topic/2.html 转摘请注明来源

Suggested Topics

SAE+python+Tornado+pyTenjin 的完整示例

python 简单易懂,Tornado 高效易学,pyTenjin 轻巧快速,SAE 安全稳定使用门槛低。现在把他们结合在一起做了一个可运行在SAE 上的完整示例。...

SAE 上还是使用KVDB 方便

KVDB 是新浪云开发的分布式 key-value 数据存储服务,用来支持公有云计算平台上的海量key-value存储。...

SAE 正式支持 Memcached 了

Memcached 是一个高性能的分布式内存对象缓存系统,可以用于动态 Web 应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。使用 Memcached ,应用性能又可以提升。...

Leave a Comment