我用 Fastapi 写了个后端,连接的是 MySQL 数据库,在测试阶段发现,过一晚上再来测试,诸如登录、查询这样的功能,会返回内部错误,但是再多点两下(正好两下)就正常了。
经过搜索后得知是 MySQL 有一个连接最大空闲时间的参数,默认是 8 小时,刚好一晚上后连接就都断开了。
我的疑惑是为什么断开连接后要请求三次才能重新建立连接,另外 Fastapi 就不能在用户请求的时候一步到位自动建立连接吗?
请各位大佬解惑,也给支个招怎么解决。
1
Oktfolio 2023-05-08 10:36:47 +08:00
连接池没有没有 keepalive 功能吗?
|
2
stille 2023-05-08 10:57:54 +08:00
正好前些天遇到同样问题。
加连接池解决了 ``` from sqlalchemy.pool import QueuePool engine = create_engine(SQLALCHEMY_DATABASE_URL, poolclass=QueuePool, pool_size=20, max_overflow=0, pool_recycle=600, pool_pre_ping=True) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) ``` |
3
cyningxu 2023-05-08 14:19:31 +08:00
这是直接裸连没上连接池吗?
|
7
lyuanxiang20 2023-05-10 14:27:53 +08:00 via Android
有用阿里云的吗?聊聊
|