__init__.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from contextlib import asynccontextmanager
  2. from fastapi import FastAPI
  3. from core.cache import initialize_cache
  4. from core.events import register_events
  5. from core.settings import app_settings
  6. from routes import register_routers
  7. from server.home.index import html_router
  8. from server.middleware import handle_middleware
  9. from server.sub_applications import handle_sub_applications
  10. from utils import logger, RedisUtil
  11. @asynccontextmanager
  12. async def lifespan(_app: FastAPI):
  13. logger.info(f"{app_settings.name} 开始启动")
  14. try:
  15. await initialize_cache()
  16. logger.info(f"{app_settings.name} 启动成功")
  17. yield
  18. finally:
  19. await RedisUtil.close_redis_pool()
  20. # 初始化FastAPI对象
  21. app = FastAPI(
  22. title=app_settings.name,
  23. description=f"{app_settings.name}接口文档",
  24. version=app_settings.version,
  25. lifespan=lifespan,
  26. )
  27. # 挂载子应用
  28. handle_sub_applications(app)
  29. # 注册路由
  30. register_routers(app)
  31. # 加载中间件处理方法(包含异常处理中间件)
  32. handle_middleware(app)
  33. app.include_router(html_router)
  34. # 注册全局事件
  35. register_events()