feat: 添加ComfyUI服务器持久化功能,支持服务器状态自动保存与恢复,增强系统的可靠性和可维护性
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
提供工作流和工作流运行的数据库操作接口
|
||||
"""
|
||||
|
||||
from .models import Workflow, WorkflowRun, WorkflowRunNode
|
||||
from .models import Workflow, WorkflowRun, WorkflowRunNode, ComfyUIServer
|
||||
from .api import (
|
||||
init_db,
|
||||
save_workflow,
|
||||
@@ -27,6 +27,7 @@ __all__ = [
|
||||
"Workflow",
|
||||
"WorkflowRun",
|
||||
"WorkflowRunNode",
|
||||
"ComfyUIServer",
|
||||
|
||||
# API函数
|
||||
"init_db",
|
||||
|
||||
@@ -11,7 +11,7 @@ import uuid
|
||||
from sqlalchemy.future import select
|
||||
from sqlalchemy import delete
|
||||
|
||||
from .models import Base, Workflow, WorkflowRun, WorkflowRunNode
|
||||
from .models import Base, Workflow, WorkflowRun, WorkflowRunNode, ComfyUIServer
|
||||
from .connection import async_engine, AsyncSessionLocal
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
from sqlalchemy import Column, String, Text, DateTime, ForeignKey
|
||||
from sqlalchemy import Column, String, Text, DateTime, ForeignKey, Integer, Boolean
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
@@ -109,3 +109,38 @@ class WorkflowRunNode(Base):
|
||||
"output_data": self.output_data,
|
||||
"error_message": self.error_message,
|
||||
}
|
||||
|
||||
|
||||
class ComfyUIServer(Base):
|
||||
"""ComfyUI 服务器模型"""
|
||||
|
||||
__tablename__ = "comfyui_servers"
|
||||
|
||||
name = Column(String, primary_key=True)
|
||||
http_url = Column(String, nullable=False)
|
||||
ws_url = Column(String, nullable=False)
|
||||
status = Column(String, nullable=False, default="offline")
|
||||
last_heartbeat = Column(DateTime)
|
||||
last_health_check = Column(DateTime)
|
||||
current_tasks = Column(Integer, default=0)
|
||||
max_concurrent_tasks = Column(Integer, default=1)
|
||||
capabilities = Column(Text) # JSON 字符串
|
||||
server_metadata = Column(Text) # JSON 字符串
|
||||
created_at = Column(DateTime, default=datetime.utcnow)
|
||||
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
return {
|
||||
"name": self.name,
|
||||
"http_url": self.http_url,
|
||||
"ws_url": self.ws_url,
|
||||
"status": self.status,
|
||||
"last_heartbeat": self.last_heartbeat.isoformat() if self.last_heartbeat else None,
|
||||
"last_health_check": self.last_health_check.isoformat() if self.last_health_check else None,
|
||||
"current_tasks": self.current_tasks,
|
||||
"max_concurrent_tasks": self.max_concurrent_tasks,
|
||||
"capabilities": self.capabilities,
|
||||
"server_metadata": self.server_metadata,
|
||||
"created_at": self.created_at.isoformat() if self.created_at else None,
|
||||
"updated_at": self.updated_at.isoformat() if self.updated_at else None,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user