from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker from app.core.config import settings from typing import AsyncGenerator engine = create_async_engine( settings.DATABASE_URL, echo=False, # Termelésben ne legyen True a log-áradat miatt future=True, pool_size=30, # Megemelve a Researcher 15-20 szála miatt max_overflow=20, # Extra rugalmasság csúcsidőben pool_pre_ping=True # Megakadályozza a "Server closed connection" hibákat ) AsyncSessionLocal = async_sessionmaker( engine, class_=AsyncSession, expire_on_commit=False, autoflush=False ) SessionLocal = AsyncSessionLocal async def get_db() -> AsyncGenerator[AsyncSession, None]: async with AsyncSessionLocal() as session: try: yield session await session.commit() except Exception: await session.rollback() raise finally: await session.close()