from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine from .settings import settings def make_engine(**overrides): """A fresh async engine. Services that need more than one pool profile (see ledger/chaos.py for pool_starvation) call this more than once.""" kwargs = dict(pool_pre_ping=True) kwargs.update(overrides) return create_async_engine(settings.postgres_dsn, **kwargs) engine = make_engine(pool_size=20, max_overflow=10) Session = async_sessionmaker(engine, expire_on_commit=False)