ComfyUI-WorkflowPublisher/README.md

188 lines
4.7 KiB
Markdown

# ComfyUI 工作流管理
![这是图片](https://cdn.roasmax.cn/static/publisher.png)
## 功能
- 工作流上传
- 工作流版本控制
- 工作流加载
- ComfyUI 服务器管理(支持持久化)
- 需配置工作流服务器 (详见**WAAS(工作流即服务) Demo API 服务器**)
# WAAS(工作流即服务) Demo API 服务器
![WAAS整体结构.png](WAAS%E6%95%B4%E4%BD%93%E7%BB%93%E6%9E%84.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. 数据库迁移
首次使用需要运行迁移脚本:
```bash
python migrate_database.py
```
### 2. 测试功能
运行测试脚本验证功能:
```bash
python test_persistence.py
```
### 3. API 使用
```python
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](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 可能也会有类似的逻辑