纠结的SqlAlchemy: SQLError: (OperationalError) (2006, ‘MySQL server has gone away’)问题处理!
?
发现问题,应用启动后,第二天来访问就出现该问题。
?
在网上go了一下,发现是mysql长连接超时。
?
1. 查Mysql超时情况。
show variables like '%timeout%'
?
wait_timeout = 28800
?
mysql默认等待超时是8个小时
?
过了1晚上肯定有问题。
?
2. 查看sqlalchemy链接问题
?
create_engine(url,pool_size=20, max_overflow=-1, pool_recycle=true,echo=True)?
?
查了源码:
?
:param pool_recycle=-1: this setting causes the pool to recycle
? ? ? ? connections after the given number of seconds has passed. It
? ? ? ? defaults to -1, or no timeout. For example, setting to 3600
? ? ? ? means connections will be recycled after one hour. Note that
? ? ? ? MySQL in particular will disconnect automatically if no
? ? ? ? activity is detected on a connection for eight hours (although
? ? ? ? this is configurable with the MySQLDB connection itself and the
? ? ? ? server configuration as well).
?
?
pool_recycle is an integer number of seconds which to wait before?
? ?reopening a conneciton. ?However, setting it to "True" is equivalent to?
? ? ? ? ? 1 which means it will reopen connections constantly.?
?
? ? ? ??pool_recycle=true标识1秒重新链接一下
?
3. 修改后pool_recycle=7200
2小时链接一次
?
?
参考地址:
http://groups.google.com/group/sqlalchemy/browse_thread/thread/9412808e695168ea/c31f5c967c135be0?pli=1
? ? ? ??http://dba007.blog.51cto.com/2876338/788315
? ? ? ??http://hi.baidu.com/limodou/item/2d00f3333cc3b884c3cf29f7