我正在使用Python,Flask,MySQL和uWSGI开发一个基于Web的应用程序。但是,我没有使用SQL Alchemy或任何其他ORM。我正在使用来自旧PHP应用程序的预先存在的数据库,无论如何它都不能很好地与ORM配合使用,所以我只是手动使用和编写查询。mysql-connector
当我第一次启动它时,该应用程序可以正常工作,但是当我第二天早上回来时,我发现它已经坏了。我会得到类似或类似的错误。mysql.connector.errors.InterfaceError: 2013: Lost connection to MySQL server during query
mysql.connector.errors.OperationalError: 2055: Lost connection to MySQL server at '10.0.0.25:3306', system error: 32 Broken pipe
我一直在研究它,我想我知道问题是什么。我只是无法找到一个好的解决方案。据我所知,问题在于我保留了对数据库连接的全局引用,并且由于 Flask 应用程序始终在服务器上运行,因此该连接最终会过期并变得无效。
我想为每个查询创建一个新连接会很简单,但这似乎远非理想的解决方案。我想我还可以构建某种连接缓存机制,该机制将在一小时左右后关闭旧连接,然后重新打开它。这是我能够想到的最好的选择,但我仍然觉得应该有一个更好的选择。
我环顾四周,大多数收到这些错误的人都有巨大或损坏的表,或类似的东西。这里的情况并非如此。旧的PHP应用程序仍然运行良好,表的行数都少于50,000行,列数不到30列,Python应用程序运行良好,直到它运行了大约一天。
因此,希望有人有一个很好的解决方案来保持与MySQL数据库的持续开放连接。或者,也许我完全吠错了树,如果是这样,希望有人知道。
哆啦的时光机
相关分类