Initial commit
This commit is contained in:
42
lifespan.py
Normal file
42
lifespan.py
Normal file
@@ -0,0 +1,42 @@
|
||||
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("[生命周期] 应用关闭 🔧✅")
|
||||
Reference in New Issue
Block a user