首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python金字塔SQLAlchemy,MySQL服务器已经消失

问Python金字塔SQLAlchemy,MySQL服务器已经消失
EN

Stack Overflow用户
提问于 2013-12-12 20:10:10
回答 3查看 826关注 0票数 5

我准备了很多关于这个问题的帖子。我的理解是,应用程序有一个设置,它说明在删除数据库连接和创建新连接之前需要多长时间保持空闲数据库连接。MySQL有一个设置,说明保持空闲连接的时间。在没有站点活动之后,MySQL会超时应用程序的连接。但是应用程序不知道这一点,并且仍然尝试使用一个现有的连接,这将失败。在失败后,应用程序放弃连接并创建一个新的连接,然后就可以了。

我在本地mysql服务器上将wait_timeout设置为10秒。在本地运行的应用程序上,我将pool_recycle设置为5秒。在10秒的不活动之后,我提出了一个请求,并且仍然会收到这个错误。在10秒内再提出另一个请求,那就没问题了。等待时间超过10秒,再次出现此错误。

有什么想法吗?

代码语言:javascript
复制
mysql> SELECT @@global.wait_timeout\G
*************************** 1. row ***************************
@@global.wait_timeout: 10
1 row in set (0.00 sec)

。

代码语言:javascript
复制
sqlalchemy.twelvemt.pool_recycle = 5

。

代码语言:javascript
复制
engine = engine_from_config(settings, 'sqlalchemy.twelvemt.')
DBSession.configure(bind=engine)

。

代码语言:javascript
复制
OperationalError: (OperationalError) (2006, 'MySQL server has gone away') 'SELECT beaker_cache.data \nFROM beaker_cache \nWHERE beaker_cache.namespace = %s' ('7cd57e290c294c499e232f98354a1f70',)

​

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-07 12:59:22

看起来,您得到的错误是由Beaker连接引发的,而不是您的DBSession连接--需要为每个连接设置pool_recycle选项。

假设您在x.ini文件中配置Beaker,您可以通过session.sa.*传递sqlalchemy选项,所以session.sa.pool_recycle = 5

请参阅http://docs.pylonsproject.org/projects/pylons-webframework/en/v0.9.7/sessions.html#sa

票数 2
EN

Stack Overflow用户

发布于 2014-11-18 20:03:46

尝试为连接设置sqlalchemy.pool_recycle

使用mySQL时,我总是将其添加到配置文件中。

代码语言:javascript
复制
sqlalchemy.pool_recycle = 3600

没有这一点,在活动暂停很长时间后,我将获得第一个请求的MySQL server has gone away。

票数 2
EN

Stack Overflow用户

发布于 2015-06-10 18:34:16

我通过在每次请求之后的会话上调用remove()来修正这个问题。您可以通过定义一个全局函数来做到这一点:

代码语言:javascript
复制
def remove_session(request, response):
    request.dbsession.remove()

然后,将此函数设置为由每个涉及请求和数据库会话的类运行:

代码语言:javascript
复制
def __init__(self, request):
    request.dbsession = DBSession
    request.add_response_callback(remove_session)

这是因为SQLAlchemy希望它的用户处理数据库会话的打开和关闭。更多信息可以在文档中找到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20553244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档