48 lines
1001 B
Python
48 lines
1001 B
Python
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 api.routers import router as api_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(api_router)
|
|
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")
|