import logging from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine from app.config import settings engine = create_async_engine( settings.DATABASE_URL, #echo=settings.DEBUG, echo=False, pool_pre_ping=True, pool_size=settings.DATABASE_POOL_SIZE, max_overflow=settings.DATABASE_MAX_OVERFLOW, pool_timeout=settings.DATABASE_POOL_TIMEOUT, ) # Отдельный пул для фонового монитора — не конкурирует с HTTP-запросами monitor_engine = create_async_engine( settings.DATABASE_URL, echo=False, pool_pre_ping=True, pool_size=3, max_overflow=2, pool_timeout=60, ) #if not settings.SQLALCHEMY_LOG: # for _log_name in ("sqlalchemy.engine", "sqlalchemy.pool", "sqlalchemy.dialects", "sqlalchemy.orm"): # logging.getLogger(_log_name).setLevel(logging.WARNING) if not settings.SQLALCHEMY_LOG: for name in ( "sqlalchemy.engine", "sqlalchemy.pool", "sqlalchemy.dialects", "sqlalchemy.orm", ): logger = logging.getLogger(name) logger.setLevel(logging.ERROR) logger.propagate = False AsyncSessionLocal = async_sessionmaker( bind=engine, class_=AsyncSession, expire_on_commit=False, autoflush=False, ) MonitorSessionLocal = async_sessionmaker( bind=monitor_engine, class_=AsyncSession, expire_on_commit=False, autoflush=False, )