奇怪的是,我的SQLAlchemyMySQL连接总是以休眠告终吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (78)

我有一个使用SQLAlchemy和MySQL的FlaskWeb应用程序,我已经设置了一个作用域会话()。我也有一个请求处理程序,在每个请求完成后调用session.emove()。由于一些奇怪的原因,如果Web应用程序在一天或更长时间内没有发出请求,应用程序就会得到“OperationalError:MySQLServer已经消失”。

在调试任务中,我查看了ShowPROCESSLIST,并看到了以下内容:

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

174是来自我的应用程序的连接已经“休眠”的秒数。如果应用程序没有发出另一个请求,它会一直计数。

似乎我的应用程序在我的请求完成之后仍然保持到MySQL的连接!而且通常只有一个进程,不管我对我的应用程序提出了多少请求,同时还是没有。

我的问题是,这种联系这么长时间“睡觉”是否正常?我非常肯定扩展的睡眠会导致MySQL在某个超时之后切断连接,这反过来又会导致“OperationalError:MySQL已经消失”错误。

提问于

扫码关注云+社区