资料
1.Fastapi 项目第二天首次访问时数据库连接报错问题Can't connect to MySQL server - 上海-悠悠 - 博客园2.Peewee_同步/异步/断线重连/连接池 - Alex-GCX - 博客园
3.【Python】SQLAlchemy长时间未请求,数据库连接断开的原因、解决方案_sqlalchemy session长期不访问断开-优快云博客
4.Python 之Mysql的异步操作库 aiomysql 使用说明手册 笔记_python aiomysql-优快云博客
过程
注意到 异步sqlalchemy 默认使用数据库连接池,那么我们可以设置连接的断开,关闭,重连的设置
解决
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from sqlalchemy.exc import OperationalError
create_async_engine(
url,
pool_pre_ping=True # 启用连接前检查
)
while True:
try:
async with AsyncSessionLocal[engine_name]() as session:
yield session
break
except OperationalError as e:
print(f"connect error: {e}")
await asyncio.sleep(2)