1
myyou 2019 年 1 月 2 日
这个表示 mysql 连接已经断开了,SQLALCHEMY_POOL_RECYCLE 设置短一些,或者不使用连接池,去掉 SQLALCHEMY_POOL_SIZE 和 SQLALCHEMY_POOL_RECYCLE
|
2
liuzhedash 2019 年 1 月 2 日
这要看 mysql 的 error.log 来确定问题,你改 sqlalchemy 那俩参数似乎并无根据呀?
|
3
NeverBelieveMe OP @myyou 我原来没有设置出了问题,然后才加的,加了也没用。
|
4
NeverBelieveMe OP @liuzhedash 这样啊,那我去找找看 mysql 的日志。
|
5
qq316107934 2019 年 1 月 2 日 via Android
session 泄露没有关闭吧,用 try catch 加上下文管理器试试?
|
6
NeverBelieveMe OP @qq316107934 session 每个请求内用完都要关掉么?
|
7
qq316107934 2019 年 1 月 2 日
@NeverBelieveMe #6 有些版本的 sqlalchemy session 池管理有问题,用完关掉不是很影响效率,而且能解决报错的问题。
|
8
xayoung 2019 年 1 月 2 日
我是每次用完 session 关掉,才完全解决这个问题的。
|
9
est 2019 年 1 月 2 日 @qq316107934
其实大家不用猜了。python 的几乎所有库的连接池都有问题 原因很简单,连接池应该在一定超时时间 idle 之后去自动重连一个的。python 的 threading、协程的状况,几乎没有一个库去实现一个 timer 主动去轮换连接。都是一个 db 操作的动作再去检查连接。然后远端主动关闭,python 的 tcp 其实是没法响应 TIME_WAIT 的。于是一发过去就 Broken pipe。。 |
10
Sidewalk5800 2019 年 1 月 2 日
@est 那应该咋解决?就是有那种好久没人使用的系统,一来又一顿猛着用那种
|
11
tanszhe 2019 年 1 月 2 日 via Android
几行代码
就能搞定的事情 |
12
fanhaipeng0403 2019 年 1 月 3 日
db.session.close()
每次都关掉,绝对会解决 |