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