feat: 重构API服务器,添加配置重载功能并移除冗余代码

This commit is contained in:
墨梓柒
2025-05-04 01:41:49 +08:00
parent cea176d63d
commit 668c9bbad6
7 changed files with 51 additions and 32 deletions

View File

@@ -1,8 +0,0 @@
from fastapi import FastAPI
from strawberry.fastapi import GraphQLRouter
app = FastAPI()
graphql_router = GraphQLRouter(schema=None, path="/") # Replace `None` with your actual schema
app.include_router(graphql_router, prefix="/graphql", tags=["GraphQL"])

28
src/api/main.py Normal file
View File

@@ -0,0 +1,28 @@
from fastapi import APIRouter
from strawberry.fastapi import GraphQLRouter
# from src.config.config import BotConfig
from src.common.logger_manager import get_logger
from src.api.reload_config import reload_config as reload_config_func
from src.common.server import global_server
# import uvicorn
# import os
router = APIRouter()
logger = get_logger("api")
# maiapi = FastAPI()
logger.info("API server started.")
graphql_router = GraphQLRouter(schema=None, path="/") # Replace `None` with your actual schema
router.include_router(graphql_router, prefix="/graphql", tags=["GraphQL"])
@router.post("/config/reload")
async def reload_config():
return await reload_config_func()
def start_api_server():
"""启动API服务器"""
global_server.register_router(router, prefix="/api/v1")

18
src/api/reload_config.py Normal file
View File

@@ -0,0 +1,18 @@
from fastapi import HTTPException
from rich.traceback import install
from src.config.config import BotConfig
import os
install(extra_lines=3)
async def reload_config():
try:
from src.config import config as config_module
bot_config_path = os.path.join(BotConfig.get_config_dir(), "bot_config.toml")
config_module.global_config = BotConfig.load_config(config_path=bot_config_path)
return {"status": "reloaded"}
except FileNotFoundError as e:
raise HTTPException(status_code=404, detail=str(e)) from e
except Exception as e:
raise HTTPException(status_code=500, detail=f"重载配置时发生错误: {str(e)}") from e