Files
intelligent-daily-report-sy…/lifespan.py
2026-02-25 15:22:23 +08:00

43 lines
1.1 KiB
Python

from contextlib import asynccontextmanager
from typing import Callable
from fastapi import FastAPI
from plugin import PluginManager
from uvicorn.server import logger
def active_config():
logger.info("[激活配置] 加载配置 ⚙️")
from config import setting # noqa
def import_router(app: FastAPI):
logger.info("[导入路由] 开始导入路由 🛣️")
from router import router
app.include_router(router)
logger.info("[导入路由] 路由导入完成 ✅")
def install_plugins_after_started(app: FastAPI):
logger.info("[安装插件] 开始安装插件 📦")
from plugin import SpaProxy
plugin_manager = PluginManager(app)
# 安装插件
plugin_manager.register_plugin(SpaProxy(app, dist="frontend/dist"))
logger.info("[安装插件] 插件安装完成 ✅")
@asynccontextmanager
async def lifespan(app: FastAPI, func: Callable = lambda: None):
logger.info("[生命周期] 应用启动 🚀")
active_config()
import_router(app)
install_plugins_after_started(app)
func()
yield
logger.info("[生命周期] 应用关闭 🔧✅")