from contextlib import asynccontextmanager from fastapi import FastAPI from core.cache import initialize_cache from core.events import register_events from core.settings import app_settings from routes import register_routers from server.home.index import html_router from server.middleware import handle_middleware from server.sub_applications import handle_sub_applications from utils import logger, RedisUtil @asynccontextmanager async def lifespan(_app: FastAPI): logger.info(f"{app_settings.name} 开始启动") try: await initialize_cache() logger.info(f"{app_settings.name} 启动成功") yield finally: await RedisUtil.close_redis_pool() # 初始化FastAPI对象 app = FastAPI( title=app_settings.name, description=f"{app_settings.name}接口文档", version=app_settings.version, lifespan=lifespan, ) # 挂载子应用 handle_sub_applications(app) # 注册路由 register_routers(app) # 加载中间件处理方法(包含异常处理中间件) handle_middleware(app) app.include_router(html_router) # 注册全局事件 register_events()