diff --git a/workflow_service/routes/comfy_server.py b/workflow_service/routes/comfy_server.py index 0db7aa1..b9c3ff0 100644 --- a/workflow_service/routes/comfy_server.py +++ b/workflow_service/routes/comfy_server.py @@ -1,13 +1,11 @@ -from fastapi import APIRouter, HTTPException, BackgroundTasks -from pydantic import BaseModel, HttpUrl +from fastapi import APIRouter, HTTPException +from pydantic import BaseModel from typing import Dict, List, Optional, Any import logging +import aiohttp +import asyncio -from workflow_service.comfy.comfy_server import ( - server_manager, - ComfyUIServerInfo, - ServerStatus, -) +from workflow_service.comfy.comfy_server import server_manager logger = logging.getLogger(__name__) @@ -84,36 +82,6 @@ async def unregister_server(request: ServerUnregisterRequest): raise HTTPException(status_code=500, detail=f"注销失败: {str(e)}") -@router.get("/status/{server_name}", response_model=ServerStatusResponse) -async def get_server_status(server_name: str): - """获取指定服务器状态""" - try: - server_info = await server_manager.get_server_status(server_name) - - if server_info is None: - raise HTTPException(status_code=404, detail=f"服务器 {server_name} 不存在") - - return ServerStatusResponse( - name=server_info.name, - http_url=server_info.http_url, - ws_url=server_info.ws_url, - status=server_info.status.value, - last_health_check=( - server_info.last_health_check.isoformat() - if server_info.last_health_check - else None - ), - current_tasks=server_info.current_tasks, - max_concurrent_tasks=server_info.max_concurrent_tasks, - capabilities=server_info.capabilities, - metadata=server_info.metadata, - ) - - except Exception as e: - logger.error(f"获取服务器 {server_name} 状态时发生错误: {e}") - raise HTTPException(status_code=500, detail=f"获取状态失败: {str(e)}") - - @router.get("/list", response_model=List[ServerStatusResponse]) async def list_all_servers(): """获取所有服务器列表""" @@ -142,49 +110,3 @@ async def list_all_servers(): except Exception as e: logger.error(f"获取服务器列表时发生错误: {e}") raise HTTPException(status_code=500, detail=f"获取列表失败: {str(e)}") - - -@router.get("/health", response_model=Dict[str, Any]) -async def get_system_health(): - """获取系统整体健康状态""" - try: - servers = await server_manager.get_all_servers() - - total_servers = len(servers) - online_servers = len([s for s in servers if s.status == ServerStatus.ONLINE]) - busy_servers = len([s for s in servers if s.status == ServerStatus.BUSY]) - offline_servers = len([s for s in servers if s.status == ServerStatus.OFFLINE]) - error_servers = len([s for s in servers if s.status == ServerStatus.ERROR]) - - total_tasks = sum(s.current_tasks for s in servers) - total_capacity = sum(s.max_concurrent_tasks for s in servers) - - return { - "total_servers": total_servers, - "online_servers": online_servers, - "busy_servers": busy_servers, - "offline_servers": offline_servers, - "error_servers": error_servers, - "current_tasks": total_tasks, - "total_capacity": total_capacity, - "utilization_rate": ( - (total_tasks / total_capacity * 100) if total_capacity > 0 else 0 - ), - } - - except Exception as e: - logger.error(f"获取系统健康状态时发生错误: {e}") - raise HTTPException(status_code=500, detail=f"获取健康状态失败: {str(e)}") - - -@router.post("/force_health_check", response_model=Dict[str, str]) -async def force_health_check(background_tasks: BackgroundTasks): - """强制执行健康检查""" - try: - # 在后台执行健康检查 - background_tasks.add_task(server_manager._perform_health_checks) - return {"message": "健康检查已启动", "status": "success"} - - except Exception as e: - logger.error(f"启动健康检查时发生错误: {e}") - raise HTTPException(status_code=500, detail=f"启动健康检查失败: {str(e)}") diff --git a/workflow_service/routes/monitor.py b/workflow_service/routes/monitor.py index eefdcf6..80f5e9e 100644 --- a/workflow_service/routes/monitor.py +++ b/workflow_service/routes/monitor.py @@ -1,29 +1,8 @@ -from fastapi import APIRouter, HTTPException +from fastapi import APIRouter from fastapi.responses import HTMLResponse -import psutil -import asyncio -import logging -from datetime import datetime, timedelta -from typing import Dict, Any, List -import json - -# 设置日志 -logger = logging.getLogger(__name__) - -from workflow_service.config import settings -from workflow_service.database.api import ( - get_workflow_runs_recent, - get_workflow_run_nodes, -) -from workflow_service.comfy.comfy_queue import WorkflowQueueManager -from workflow_service.comfy.comfy_server import server_manager monitor_router = APIRouter(prefix="/monitor", tags=["监控"]) -# 全局队列管理器实例 -queue_manager = WorkflowQueueManager() - - @monitor_router.get("/", response_class=HTMLResponse) async def monitor_dashboard(): """监控仪表板页面""" @@ -380,20 +359,20 @@ async def monitor_dashboard():