import logging from contextlib import asynccontextmanager from config import settings, STATIC_DIR import uvicorn from fastapi import FastAPI from fastapi.responses import ORJSONResponse from starlette.staticfiles import StaticFiles from web.routers import router as web_router from models import db_helper @asynccontextmanager async def lifespan(app: FastAPI): # startup yield # shutdown await db_helper.dispose() main_app = FastAPI( default_response_class=ORJSONResponse, lifespan=lifespan, docs_url=None, ) main_app.include_router( web_router, ) main_app.mount( "/static", StaticFiles(directory=STATIC_DIR), name="static", ) if __name__ == "__main__": logging.info("Starting server") uvicorn.run( "main:main_app", host=settings.run.host, port=settings.run.port, reload=settings.run.reload, ) logging.info("Server stopped")