奇怪的是,我的SQLAlchemy MySQL连接总是在睡觉?

2024-04-27 14:57:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用SQLAlchemy和MySQL的Flask web应用程序,并且我已经设置了scopedsession()。我还有一个teardown_请求处理程序,它在每个请求完成后调用session.remove()。出于某种奇怪的原因,如果一天或更长时间没有在web应用上发出请求,则该应用将得到“Operationalerror:MySQL Server has gone away”。

在我的调试任务中,我查看了SHOW PROCESSLIST,看到了以下内容:

39817253 | sqladmin | my_host | kb_dev   | Sleep   |  174 |

174是我的应用程序连接“休眠”的秒数。如果应用程序不提出另一个请求,它将继续计数。

即使在我的请求完成之后,我的应用程序似乎仍然保持与MySQL的连接!而且通常只有一个进程,无论我对我的应用程序提出多少请求,同时或不。

我的问题是,连接“睡眠”这么长时间是否正常?我敢肯定,扩展睡眠导致MySQL在某个超时之后切断连接,而这又导致了“OperationalError:MySQL has gone away”错误。


Tags: web应用程序处理程序flasksqlalchemysessionmysql原因