
1 dongxiao Dec 10, 2020 via Android 我用的 sqlalchemy,采用的方法是设置超时后把 session 设成 global,然后开了个多线程在超时前销毁 session 并重建,用的地方 import 这个包就行 |
2 yagamil Dec 10, 2020 持久化连接池 |
3 jayzau1973 OP @dongxiao 我在想难道每个写后端的都要这样搞吗,感觉不太合理。PHP 就不用自己去优化 |
4 jayzau1973 OP @yagamil 连接池倒是有 `PooledMySQLDatabase`,但好像无法持久化... |
5 676529483 Dec 10, 2020 数据库连接要在请求结束时关闭,或者交还给连接池,要主动释放资源,flask 可以通过钩子做 |
6 wewin Dec 10, 2020 大概过了多久?我记得 mysql 连接,闲置 8 小时会断开 |
7 zhanglintc Dec 10, 2020 初始化应该有个自动重连的参数可以设置,找找文档看看呢 |
8 MaxFang Dec 10, 2020 @jayzau1973 非优化过的框架里面,php 也是没有超时自动重连的吧。一般 mysql 默认连接 8 小时。以前踩过类似的坑。 |
9 littlewing Dec 10, 2020 via iPhone 把数据库的超时断开连接时间调大 |
10 jayzau1973 OP |
11 jayzau1973 OP @MaxFang 嘿嘿嘿 PHP 就接触过一点 laravel 框架 |
12 jayzau1973 OP @zhanglintc 好的我看看 |
13 Rache1 Dec 11, 2020 Laravel 是有自动重连的 \Illuminate\Database\DetectsLostConnections::causedByLostConnection |
14 daytonight Dec 11, 2020 使用前 ping 一次 mysql,失败则重新建立连接,sqlalchemy 可以设置 pool_pre_ping 参数。 |
15 meshell Dec 11, 2020 发个 select 1 呗然后重连 |
16 viiii Jan 21, 2021 不知道楼主解决这个问题没有? 一样在这里被卡住了 |
17 jayzau1973 OP @viiii 没呢 断了手动重启- - |