43 lines
1.1 KiB
Python
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("[生命周期] 应用关闭 🔧✅")
|