我有一个使用SQLAlchemy和MySQL的Flask web应用程序,并且我设置了一个作用域set ()。我还有一个teardown_request处理程序,它在每个请求完成后调用session.remove()。出于某种奇怪的原因,如果web应用程序在一天或更长时间内没有请求,应用程序会收到“操作错误: MySQL服务器已消失”。
在我的调试任务中,我查看了SHOW PROCESSLIST,并看到了以下内容:
39817253 | sqladmin | my_host | kb_dev | Sleep | 174 |
174是来自我的应用程序的连接已经“休眠”的秒数。如果应用程序没有发出另一个请求,它会继续计数。
即使在我的请求完成之后,我的应用程序似乎仍然保持着到MySQL的连接!而且,无论我的应用程序发出多少请求,通常只有一个进程,无论是否同时进行。
我的问题是,连接“休眠”这么长时间是否正常?我很确定延长休眠时间会导致MySQL在某个超时后切断连接,而这反过来又会导致"OperationalError: Mysql已消失“错误。
https://stackoverflow.com/questions/8824826
复制相似问题