RuoYi-Vue3-FastAPI icon indicating copy to clipboard operation
RuoYi-Vue3-FastAPI copied to clipboard

数据库连接问题

Open Gscsd8527 opened this issue 1 year ago • 1 comments

为什么你在每次访问数据库的时候都需要重新连接,我并没有看到缓存的信息,我是这样写的,我这样写会有什么问题吗? @lru_cache def get_async_engine(): return create_async_engine( SQLALCHEMY_ASYNC_DATABASE_URL, echo=False, pool_pre_ping=True, future=True, max_overflow=DataBaseConfig.DB_MAX_OVERFLOW, pool_size=DataBaseConfig.DB_POOL_SIZE, pool_recycle=DataBaseConfig.DB_RECYCLE, pool_timeout=DataBaseConfig.DB_POOL_TIMEOUT, )

@lru_cache def get_session_factory(): return async_sessionmaker( autocommit=False, bind=get_async_engine(), expire_on_commit=False, autoflush=False, class_=AsyncSession )

获取mysql句柄

async def session_getter() -> AsyncGenerator[AsyncSession, None]: session_factory = get_session_factory() async with session_factory() as session: # 调用工厂生成会话 async with session.begin(): yield session

路由

@router.get('', summary="banner", description="banner") async def banner( session: AsyncSession = Depends(session_getter) ): data = await BannerService.banner_list(session) return SuccessResponse(data)

Gscsd8527 avatar Apr 23 '25 11:04 Gscsd8527

我也发现数据库连接经常会中断,这样感觉很不好

japleak avatar May 14 '25 01:05 japleak