33 lines
		
	
	
		
			762 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			762 B
		
	
	
	
		
			Python
		
	
	
	
	
	
from typing import AsyncGenerator
 | 
						|
 | 
						|
from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker, AsyncSession
 | 
						|
 | 
						|
from .config import (
 | 
						|
    PG_HOST,
 | 
						|
    PG_LOGIN,
 | 
						|
    PG_PORT,
 | 
						|
    PG_DATABASE,
 | 
						|
    PG_PASSWORD,
 | 
						|
)
 | 
						|
 | 
						|
database_url = (
 | 
						|
    f"postgresql+asyncpg://"
 | 
						|
    f"{PG_LOGIN}:{PG_PASSWORD}@"
 | 
						|
    f"{PG_HOST}:{PG_PORT}/{PG_DATABASE}"
 | 
						|
)
 | 
						|
engine = create_async_engine(database_url,
 | 
						|
                             pool_size=20,
 | 
						|
                             max_overflow=10
 | 
						|
                             )
 | 
						|
session_factory = async_sessionmaker(
 | 
						|
    engine,
 | 
						|
    expire_on_commit=False,
 | 
						|
    autoflush=False,
 | 
						|
    autocommit=False
 | 
						|
)
 | 
						|
 | 
						|
 | 
						|
async def get_session() -> AsyncGenerator[AsyncSession, None]:
 | 
						|
    async with session_factory() as session:
 | 
						|
        yield session
 |