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

View File

@@ -1,5 +1,6 @@
import asyncio import asyncio
import time import time
import os
from .plugins.utils.statistic import LLMStatistics from .plugins.utils.statistic import LLMStatistics
from .plugins.moods.moods import MoodManager from .plugins.moods.moods import MoodManager
from .plugins.schedule.schedule_generator import bot_schedule from .plugins.schedule.schedule_generator import bot_schedule
@@ -18,6 +19,7 @@ from .plugins.remote import heartbeat_thread # noqa: F401
from .individuality.individuality import Individuality from .individuality.individuality import Individuality
from .common.server import global_server from .common.server import global_server
from rich.traceback import install from rich.traceback import install
from .api.main import start_api_server
install(extra_lines=3) install(extra_lines=3)
@@ -54,6 +56,9 @@ class MainSystem:
self.llm_stats.start() self.llm_stats.start()
logger.success("LLM统计功能启动成功") logger.success("LLM统计功能启动成功")
# 启动API服务器
start_api_server()
logger.success("API服务器启动成功")
# 初始化表情管理器 # 初始化表情管理器
emoji_manager.initialize() emoji_manager.initialize()
logger.success("表情包管理器初始化成功") logger.success("表情包管理器初始化成功")

View File

@@ -1 +0,0 @@

View File

@@ -1,19 +0,0 @@
from fastapi import APIRouter, HTTPException
from rich.traceback import install
install(extra_lines=3)
# 创建APIRouter而不是FastAPI实例
router = APIRouter()
@router.post("/reload-config")
async def reload_config():
try: # TODO: 实现配置重载
# bot_config_path = os.path.join(BotConfig.get_config_dir(), "bot_config.toml")
# BotConfig.reload_config(config_path=bot_config_path)
return {"message": "TODO: 实现配置重载", "status": "unimplemented"}
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

View File

@@ -1,4 +0,0 @@
import requests
response = requests.post("http://localhost:8080/api/reload-config")
print(response.json())