feat: 优化连接相关配置

This commit is contained in:
martsforever
2026-03-20 13:59:11 +08:00
parent 150a416522
commit 7b9d1253a5
3 changed files with 62 additions and 40 deletions
+22 -22
View File
@@ -1,36 +1,36 @@
import asyncio
import sys
from contextlib import asynccontextmanager
from typing import Annotated, AsyncContextManager
from typing import Annotated
from fastapi.params import Depends
from langgraph.checkpoint.postgres.aio import AsyncPostgresSaver
from sqlalchemy import AsyncAdaptedQueuePool, text
from sqlalchemy.ext.asyncio import AsyncEngine
from sqlalchemy import text
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker
from sqlmodel.ext.asyncio.session import AsyncSession
from app.config.env import env
from sqlmodel import create_engine
DATABASE_URL = f"mysql+asyncmy://{env.db_username}:{env.db_password}@{env.db_host}:{env.db_port}/{env.db_database}?charset=utf8mb4"
# 创建异步引擎实例,用于异步操作数据库
async_engine = AsyncEngine(create_engine(
# 建议直接使用这个函数,不要嵌套 create_engine(AsyncAdaptedQueuePool)
async_engine = create_async_engine(
DATABASE_URL,
poolclass=AsyncAdaptedQueuePool, # 使用异步适配的队列池
pool_size=5, # 连接池保持的连接数
max_overflow=10, # 允许超过pool_size的最大连接数
pool_timeout=30, # 获取连接的超时时间(秒)
pool_recycle=180, # 连接回收时间(秒)
pool_pre_ping=True, # 启用连接有效性检测
echo=True, # 启用SQL语句日志输出,便于开发调试
future=True, # 启用SQLAlchemy 2.0风格的未来模式API
))
# 连接池保持的连接数
pool_size=5,
# 允许超过pool_size的最大连接数
max_overflow=10,
# 获取连接的超时时间(秒)
pool_timeout=30,
# 连接回收时间(秒)
pool_recycle=60, # 针对 Docker NAT 环境优化
# 启用连接有效性检测
pool_pre_ping=True, # 解决 Lost connection 的核心
# 启用SQL语句日志输出,便于开发调试
echo=True,
# 启用SQLAlchemy 2.0风格的未来模式API
future=True,
)
# 创建一个会话工厂函数
# 使用这个 Session 工厂
async_session = sessionmaker(
bind=async_engine,
async_engine,
class_=AsyncSession,
expire_on_commit=False
)