Go to file
iHeyTang 132ed292d6 fix: update task ID references in monitor routes for consistency with database schema 2025-08-18 11:04:26 +08:00
js feat: 添加ComfyUI服务器管理功能,重构相关代码以支持动态注册和状态监控,增强系统的可扩展性和可维护性 2025-08-14 15:52:20 +08:00
workflow_service fix: update task ID references in monitor routes for consistency with database schema 2025-08-18 11:04:26 +08:00
.env feat: 添加ComfyUI服务器管理功能,重构相关代码以支持动态注册和状态监控,增强系统的可扩展性和可维护性 2025-08-14 15:52:20 +08:00
.gitignore fix: 理itignore 2025-08-08 18:35:35 +08:00
README.md feat: 添加ComfyUI服务器持久化功能,支持服务器状态自动保存与恢复,增强系统的可靠性和可维护性 2025-08-15 11:04:47 +08:00
WAAS整体结构.png add 增加系统结构文档 2025-08-01 14:55:49 +08:00
__init__.py feat: 添加CORS支持,优化API响应,重构工作流管理逻辑,支持本地存储设置 2025-08-11 15:24:42 +08:00
modal_deploy.py add waas服务器支持多comfyui执行器 2025-08-01 14:32:57 +08:00
requirements.txt feat: 添加队列监控功能,支持手动触发和监控间隔设置,增强任务处理能力 2025-08-18 10:59:01 +08:00
run_service.py feat: 添加监控路由和相关功能,更新依赖项以支持新特性,增强服务监控能力 2025-08-14 14:40:42 +08:00

README.md

ComfyUI 工作流管理

这是图片

功能

  • 工作流上传
  • 工作流版本控制
  • 工作流加载
  • ComfyUI 服务器管理(支持持久化)
  • 需配置工作流服务器 (详见WAAS(工作流即服务) Demo API 服务器)

WAAS(工作流即服务) Demo API 服务器

WAAS整体结构.png

  • 路径: ./workflow_service

  • 部署: modal deploy modal_deploy.py --name waas-demo -e dev

  • 配置: 参考.env文件

  • 必须按照指定规则命名

    • 输入节点名: 前缀 INPUT_
    • 除生成文件节点外输出节点名: 前缀 OUTPUT_
  • 支持输入节点:

    • comfyui-core
      • 加载图像
    • ComfyUI-VideoHelperSuite
      • Load Video(Upload)
    • comfyui-easy-use
      • 整数
      • 字符串
      • 浮点数
  • 支持输出节点:

    • 所有在 output 文件夹中生成文件(图片/视频)的节点
    • comfyui-easy-use
      • 展示任何
  • 数据库

    • 类型: SQLite (workflows_service.sqlite)
  • 数据库结构

    CREATE TABLE IF NOT EXISTS workflows (
        name TEXT PRIMARY KEY,
        base_name TEXT NOT NULL,
        version TEXT NOT NULL,
        workflow_json TEXT NOT NULL
    )
    
    CREATE TABLE IF NOT EXISTS comfyui_servers (
        name TEXT PRIMARY KEY,
        http_url TEXT NOT NULL,
        ws_url TEXT NOT NULL,
        status TEXT NOT NULL DEFAULT 'offline',
        last_heartbeat DATETIME,
        last_health_check DATETIME,
        current_tasks INTEGER DEFAULT 0,
        max_concurrent_tasks INTEGER DEFAULT 1,
        capabilities TEXT,
        server_metadata TEXT,
        created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
        updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
    )
    
  • 路由

    • GET /api/workflow: 列出工作流
    • POST /api/workflow: 添加工作流
    • DELETE /api/workflow: 删除工作流
    • GET /api/run/{base_name}: 获取工作流输入输出元数据
    输入:
    *base_name: 工作流名称
    version: 工作流版本
    
    输出:
    Json
    {
      "inputs": {
        "image_image": {
          "node_id": "13",
          "type": "UploadFile",
          "widget_name": "image"
        },
        "prefix_value": {
          "node_id": "22",
          "type": "int",
          "widget_name": "value"
        }
      },
      "outputs": {
        "text_output": {
          "node_id": "21",
          "class_type": "easy showAnything",
          "output_name": "output",
          "output_index": 0
        }
      }
    }
    
    • POST /api/run/{base_name}: 执行工作流
    输入:
    *base_name: 工作流名称
    version: 工作流版本
    
    输出:
    Json
    {
        "output_files": [
          "https://cdn.roasmax.cn/outputs/测试/4e91e429-c848-4f66-885c-98a83c745872_111_00001_.png"
        ],
        "text_output": [
          "output\\111_00001_.png"
        ]
    }
    

ComfyUI 服务器持久化功能

概述

ComfyUI 服务器管理器现在支持持久化功能,这意味着即使管理服务重启,也能从数据库中恢复已注册的服务器及其状态信息。

主要特性

  • 自动持久化: 服务器注册、状态变化、注销时自动保存到数据库
  • 自动恢复: 服务启动时自动从数据库加载已注册的服务器
  • 健康检查: 定期检查服务器健康状态并更新数据库
  • 心跳机制: 支持服务器主动发送心跳,自动检测超时

使用方法

1. 数据库迁移

首次使用需要运行迁移脚本:

python migrate_database.py

2. 测试功能

运行测试脚本验证功能:

python test_persistence.py

3. API 使用

from workflow_service.comfy.comfy_server import server_manager

# 注册服务器
await server_manager.register_server(
    name="my_server",
    http_url="http://localhost:8188",
    ws_url="ws://localhost:8188",
    max_concurrent_tasks=2
)

# 获取服务器状态
servers = await server_manager.get_all_servers()

详细文档请参考 PERSISTENCE_README.md


JS 脚本使用指南

MacOS

将这个脚本直接放在该目录下,重启 ComfyUI 即可 /Applications/ComfyUI.app/Contents/Resources/ComfyUI/custom_nodes/ComfyUI-Manager/js

Windows

将这个脚本直接放在该目录下,重启 ComfyUI 即可 {Comfy 的安装目录}\comfy\ComfyUI\custom_nodes\ComfyUI-Manager\js

Q&A

主要是找到 custom_nodes/ComfyUI-Manager 的位置,这个目录下有一个 js 目录,把 publisher.js 脚本直接扔到这个 js 目录下即可。

一些版本安装的时候,用户额外装的的 custom_nodes 和系统自带的可能还不在一个位置,比如 MacOS 装客户端版本。用户额外装的是在 Documents 下,但 ComfyUI-Manager 是在对应的安装包目录里,得去 /Applications 里找。Windows 可能也会有类似的逻辑