70 lines
1.9 KiB
Python
70 lines
1.9 KiB
Python
from contextlib import asynccontextmanager
|
|
from fastapi import FastAPI
|
|
from database.creator import db_manager
|
|
from router.invite import invite_router
|
|
from router.jwc import jwc_router
|
|
from router.login import login_router
|
|
from router.aac import aac_router
|
|
from router.user import user_router
|
|
from richuru import install
|
|
from fastapi.middleware.cors import CORSMiddleware as allow_origins
|
|
import uvicorn
|
|
# 导入配置管理器和日志设置
|
|
from config import config_manager
|
|
from config.logger import setup_logger, get_logger
|
|
|
|
# 初始化日志系统
|
|
setup_logger()
|
|
logger = get_logger()
|
|
|
|
install()
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
# 验证配置文件完整性
|
|
if not config_manager.validate_config():
|
|
logger.error("配置文件验证失败,请检查配置")
|
|
raise RuntimeError("配置文件验证失败")
|
|
|
|
logger.info("应用程序启动中...")
|
|
|
|
# 启动时连接数据库
|
|
await db_manager.init_db()
|
|
logger.success("数据库连接成功")
|
|
|
|
yield
|
|
|
|
# 关闭时断开数据库连接
|
|
await db_manager.close_db()
|
|
logger.info("应用程序已关闭")
|
|
|
|
|
|
# 获取应用配置
|
|
app_config = config_manager.get_settings().app
|
|
|
|
# Production FastAPI application
|
|
app = FastAPI(
|
|
lifespan=lifespan,
|
|
title=app_config.title,
|
|
description=app_config.description,
|
|
version=app_config.version,
|
|
debug=app_config.debug,
|
|
)
|
|
|
|
# CORS配置
|
|
app.add_middleware(
|
|
allow_origins,
|
|
allow_origins=app_config.cors_allow_origins,
|
|
allow_credentials=app_config.cors_allow_credentials,
|
|
allow_methods=app_config.cors_allow_methods,
|
|
allow_headers=app_config.cors_allow_headers,
|
|
)
|
|
app.include_router(invite_router)
|
|
app.include_router(jwc_router)
|
|
app.include_router(login_router)
|
|
app.include_router(aac_router)
|
|
app.include_router(user_router)
|
|
|
|
if __name__ == "__main__":
|
|
uvicorn.run(app, host=app_config.host, port=app_config.port) |