__author__ = 'ziyan.yin' __describe__ = '' import sys from contextlib import asynccontextmanager from basex.config import settings from basex.db import session from basex.ext import cache from fastapi import FastAPI from loguru import logger from app import domains from app.extensions import sqlmap @asynccontextmanager async def setup(app: FastAPI): init_logger() init_routers(app) session.initial_engine() cache.initialize() sqlmap.initial_template() yield await session.shutdown() await cache.shutdown() def init_logger() -> None: logger.configure( handlers=[ {'sink': sys.stdout, "level": settings.log.level}, # io settings.log # file ] ) def init_routers(app: FastAPI) -> None: for domain in domains.__all__: __import__(f'app.domains.{domain}.controller') controller = getattr(domains, domain).controller app.include_router(controller.router) logger.info(f'add {domain} router')