Skip to content

一个基于 FastAPI 和 Celery 的 ComfyUI 分布式 Web 服务系统,支持多种 AI 内容生成任务的统一管理和调度。

Notifications You must be signed in to change notification settings

uc0154/ComfyUI-Web-Service

Repository files navigation

ComfyUI Web Service

一个基于 FastAPI 和 Celery 的 ComfyUI 分布式 Web 服务系统,支持多种 AI 内容生成任务的统一管理和调度。

📋 快速导航

🌟 核心特性

🎨 多模态内容生成

  • 文生图 (Text-to-Image): 支持 SD 1.5、SDXL 等多种模型
  • 图生视频 (Image-to-Video): SVD 模型支持,高质量视频生成
  • 工作流扩展: 支持自定义 ComfyUI 工作流集成

🏗️ 分布式架构

  • 主从架构: 一台主机调度器 + 多台 ComfyUI 工作节点
  • 智能负载均衡: 轮询、最少负载、加权、随机等多种策略
  • 故障转移: 自动检测节点故障,任务重新分配
  • 节点管理: 动态节点注册、健康检查、状态监控

� 现代化界面

  • Vue.js 客户端: 响应式设计,支持移动端访问
  • Vue.js 管理后台: 完整的系统管理和监控界面
  • 实时更新: WebSocket 实时任务进度和状态推送
  • 局域网访问: 支持多设备同时访问

�️ 企业级数据管理

  • 三数据库分离: 客户端、管理端、共享数据独立存储
  • 版本化迁移: 完整的数据库迁移系统,支持版本控制
  • 数据持久化: 任务记录、用户数据、系统配置持久化存储
  • 备份恢复: 自动化数据备份和恢复机制

🔐 安全与认证

  • JWT 认证: 基于 Token 的安全认证机制
  • 用户管理: 客户端用户注册、登录、会话管理
  • 权限控制: 基于角色的访问控制 (RBAC)
  • API 安全: 完整的 API 认证和授权体系

🐳 容器化部署

  • Docker 支持: 完整的容器化解决方案
  • 一键部署: 自动化部署脚本,支持开发和生产环境
  • 服务编排: Docker Compose 多服务协调
  • 监控集成: 可选的 Prometheus + Grafana 监控栈

🏗️ 系统架构

分布式架构设计

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Vue.js Client │    │  Vue.js Admin   │    │   Mobile App    │
│  (响应式前端)    │    │   (管理后台)     │    │   (未来支持)     │
└─────────┬───────┘    └─────────┬───────┘    └─────────┬───────┘
          │                      │                      │
          └──────────────────────┼──────────────────────┘
                                 │ RESTful API + WebSocket
┌─────────────────────────────────────────────────────────────┐
│                    主机调度器 (Master Node)                   │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐ │
│  │   API Gateway   │  │  Task Scheduler │  │  Node Manager   │ │
│  │   (FastAPI)     │  │   (Celery)      │  │   (Registry)    │ │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘ │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐ │
│  │ Load Balancer   │  │ Health Monitor  │  │ Config Manager  │ │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘ │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐ │
│  │ Database Layer  │  │ File Manager    │  │ Auth Service    │ │
│  │ (三分离架构)     │  │ (分布式存储)     │  │ (JWT认证)       │ │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
                                │ HTTP/WebSocket
                    ┌───────────┼───────────┐
                    │           │           │
            ┌───────▼───┐ ┌─────▼─────┐ ┌───▼───────┐
            │ComfyUI-1  │ │ComfyUI-2  │ │ComfyUI-N  │
            │(Worker)   │ │(Worker)   │ │(Worker)   │
            │GPU节点    │ │GPU节点    │ │GPU节点    │
            └───────────┘ └───────────┘ └───────────┘

核心组件详解

🌐 前端层

  • Vue.js 客户端: 现代化响应式界面,支持实时任务监控
  • Vue.js 管理后台: 完整的系统管理和监控界面
  • 移动端适配: 响应式设计,支持移动设备访问

🚀 API 网关层

  • FastAPI 服务: 高性能异步 API 框架
  • 认证授权: JWT Token 认证,基于角色的权限控制
  • 请求路由: 智能请求分发和负载均衡
  • WebSocket 支持: 实时任务状态推送

🧠 任务调度层

  • Celery 分布式队列: 异步任务处理和调度
  • Redis 消息代理: 高性能任务队列和缓存
  • 任务优先级: 支持任务优先级和批量处理
  • 故障恢复: 任务失败重试和错误处理

🔧 节点管理层

  • 动态节点发现: 自动检测和注册 ComfyUI 节点
  • 健康监控: 实时节点状态检查和性能监控
  • 负载均衡: 多种负载均衡策略,智能任务分发
  • 故障转移: 自动故障检测和任务重新分配

🗄️ 数据存储层

  • MySQL 三分离: 客户端、管理端、共享数据独立存储
  • Redis 缓存: 高性能数据缓存和会话存储
  • 文件管理: 分布式文件存储和同步机制
  • 数据迁移: 版本化数据库结构管理

🖥️ 工作节点层

  • ComfyUI 实例: 独立的 AI 内容生成工作节点
  • GPU 资源: 专用 GPU 计算资源
  • 模型管理: 本地模型存储和版本管理
  • 结果输出: 生成内容的本地存储和传输

📋 系统要求

🖥️ 主机调度器要求

  • CPU: 4核心+ (推荐 8核心)
  • 内存: 8GB+ RAM (推荐 16GB+)
  • 存储: 100GB+ 可用空间
  • 网络: 千兆网络连接

🎮 ComfyUI 工作节点要求

  • GPU: NVIDIA GPU 8GB+ VRAM (推荐 RTX 3080/4080+)
  • CPU: 4核心+
  • 内存: 16GB+ RAM (推荐 32GB+)
  • 存储: 200GB+ 可用空间 (用于模型和输出文件)
  • 网络: 千兆网络连接

💻 软件环境要求

主机调度器

  • 操作系统: Linux/Windows/macOS
  • Python: 3.10+ (推荐 3.11)
  • Docker: 20.10+ (推荐容器化部署)
  • Docker Compose: 2.0+
  • MySQL: 8.0+
  • Redis: 6.0+

ComfyUI 工作节点

  • 操作系统: Linux/Windows (推荐 Linux)
  • Python: 3.10+
  • ComfyUI: 最新版本
  • CUDA: 11.8+ (NVIDIA GPU)
  • PyTorch: 2.0+ (GPU 版本)

🌐 网络要求

  • 局域网: 所有节点需在同一局域网或可互相访问
  • 端口开放:
    • 主机: 8000 (API), 8001 (客户端), 8002 (管理后台)
    • 工作节点: 8188 (ComfyUI 默认端口)
  • 带宽: 建议千兆网络,支持大文件传输

🚀 快速开始

🐳 方式一:Docker 一键部署(推荐)

1. 环境准备

# 克隆项目
git clone <repository-url>
cd ComfyUI-Web-Service

# 确保 Docker 和 Docker Compose 已安装
docker --version
docker compose version

2. 配置环境

cd docker/
cp .env .env.local

# 编辑环境配置文件
nano .env.local

重要配置项

# 数据库密码(请修改为强密码)
MYSQL_ROOT_PASSWORD=your_secure_password

# ComfyUI 节点地址(修改为实际地址)
COMFYUI_NODE_HOST=192.168.1.100
COMFYUI_NODE_PORT=8188

# JWT 密钥(生产环境必须修改)
JWT_SECRET_KEY=your-super-secret-jwt-key

3. 一键部署

# Linux/macOS 用户
chmod +x deploy.sh
./deploy.sh build
./deploy.sh start -d

# Windows 用户(Git Bash/WSL)
bash deploy.sh build
bash deploy.sh start -d

# 查看服务状态
./deploy.sh status

4. 验证部署

# 查看服务日志
./deploy.sh logs

# 检查健康状态
curl http://localhost:8000/health

5. 访问服务

⚙️ 方式二:传统部署

1. 环境准备

# 克隆项目
git clone <repository-url>
cd ComfyUI-Web-Service

# 创建虚拟环境
python -m venv .venv

# 激活虚拟环境
# Windows
.venv\Scripts\activate
# Linux/macOS
source .venv/bin/activate

# 升级 pip 并安装依赖
pip install --upgrade pip
pip install -r requirements.txt

2. 数据库准备

# 安装并启动 MySQL 8.0+
# 安装并启动 Redis 6.0+

# 配置数据库连接
cp backend/config.yaml backend/config.yaml.backup
nano backend/config.yaml

配置数据库连接

mysql:
  client:
    host: localhost
    port: 3306
    user: root
    password: "your_password"
    database: comfyui_client
  admin:
    host: localhost
    port: 3306
    user: root
    password: "your_password"
    database: comfyui_admin
  shared:
    host: localhost
    port: 3306
    user: root
    password: "your_password"
    database: comfyui_shared

3. 初始化数据库

# 使用数据库管理工具初始化
python database/tools/db_manager.py init

# 验证数据库状态
python database/tools/db_manager.py status

4. 配置 ComfyUI 节点

# 在 backend/config.yaml 中配置节点
nodes:
  static_nodes:
    - node_id: "comfyui-worker-1"
      host: "192.168.1.100"  # ComfyUI 服务器IP
      port: 8188
      max_concurrent: 4
      capabilities: ["text_to_image", "image_to_video"]

5. 启动服务

# 终端1: 启动 Redis
redis-server

# 终端2: 启动 Celery Worker
cd backend
celery -A app.queue.celery_app worker --loglevel=info --concurrency=4

# 终端3: 启动 FastAPI 主服务
cd backend
uvicorn app.main_v2:app --host 0.0.0.0 --port 8000 --reload

# 终端4: 启动客户端服务
cd scripts
python start_client.py

# 终端5: 启动管理后台服务
cd scripts
python start_admin.py

6. 验证部署

# 检查服务状态
curl http://localhost:8000/health
curl http://localhost:5174/
curl http://localhost:5173/

🗄️ 数据库管理

三分离数据库架构

项目采用企业级三数据库分离架构,实现数据隔离和安全管理:

📊 客户端数据库 (comfyui_client)

  • 用途: 存储客户端用户数据和基础任务信息
  • 访问者: Vue.js 客户端界面
  • 主要表: 用户信息、任务记录、上传文件、访问日志
  • 特点: 面向用户的高频读写操作

🛠️ 管理后台数据库 (comfyui_admin)

  • 用途: 存储系统管理、配置和监控数据
  • 访问者: Vue.js 管理后台
  • 主要表: 管理员账户、工作流模板、模型管理、系统配置
  • 特点: 管理员专用,权限控制严格

🔄 共享数据库 (comfyui_shared)

  • 用途: 存储需要跨系统访问的核心数据
  • 访问者: 客户端和管理端都可访问
  • 主要表: 全局任务、节点分配、文件管理、系统统计
  • 特点: 分布式系统的数据中心

版本化迁移系统

🔧 迁移管理工具

# 初始化数据库(新环境部署)
python database/tools/db_manager.py init

# 查看数据库状态
python database/tools/db_manager.py status

# 查看迁移状态
python database/tools/db_manager.py migration-status

# 执行迁移
python database/tools/db_manager.py migrate

# 创建新迁移
python database/tools/create_migration.py create add_new_field --database client --description "添加新字段"

# 列出所有迁移
python database/tools/create_migration.py list

📁 数据库目录结构

database/
├── README.md                    # 数据库使用说明
├── setup_databases.sql          # 数据库初始化脚本
├── schema/                      # 数据库结构文件
│   ├── README.md                # 结构文件说明
│   ├── client_database.sql      # 客户端数据库结构
│   ├── admin_database.sql       # 管理后台数据库结构
│   └── shared_database.sql      # 共享数据库结构
├── migrations/                  # 数据库迁移文件
│   ├── README.md                # 迁移系统说明
│   ├── client/                  # 客户端数据库迁移
│   ├── admin/                   # 管理后台数据库迁移
│   └── shared/                  # 共享数据库迁移
└── tools/                       # 数据库管理工具
    ├── db_manager.py            # 主要数据库管理工具
    ├── migration_manager.py     # 迁移管理器
    └── create_migration.py      # 创建迁移文件工具

数据库特性

🔒 安全特性

  • 连接加密: 支持 SSL/TLS 连接
  • 权限分离: 不同数据库使用不同用户权限
  • 审计日志: 完整的数据库操作日志
  • 备份恢复: 自动化备份和恢复机制

⚡ 性能优化

  • 索引优化: 针对查询模式优化的索引设计
  • 连接池: 数据库连接池管理
  • 查询缓存: Redis 缓存热点数据
  • 分区表: 大表分区提升查询性能

🐳 Docker 容器化部署

完整容器化解决方案

项目提供企业级 Docker 容器化部署方案,支持开发和生产环境:

📁 Docker 配置结构

docker/
├── Dockerfile                   # 主应用镜像构建文件
├── docker-compose.yml           # 开发环境配置
├── docker-compose.prod.yml      # 生产环境配置
├── deploy.sh                    # 智能部署管理脚本
├── start.sh                     # 容器启动脚本
├── wait-for-it.sh              # 服务依赖等待脚本
├── .env                         # 环境变量模板
├── logging.yaml                 # 日志配置
├── mysql/                       # MySQL 配置
│   └── my.cnf                   # MySQL 优化配置
├── redis/                       # Redis 配置
│   └── redis.conf               # Redis 优化配置
└── nginx/                       # Nginx 配置
    ├── nginx.conf               # 开发环境配置
    └── nginx.prod.conf          # 生产环境配置

🚀 部署命令详解

开发环境部署

cd docker/

# 构建镜像
./deploy.sh build

# 启动服务(前台运行,查看日志)
./deploy.sh start

# 启动服务(后台运行)
./deploy.sh start -d

# 查看服务状态
./deploy.sh status

# 查看实时日志
./deploy.sh logs

# 查看特定服务日志
./deploy.sh logs comfyui-web

生产环境部署

# 使用生产环境配置
./deploy.sh -p build
./deploy.sh -p start -d

# 生产环境状态监控
./deploy.sh -p status
./deploy.sh -p logs

数据库管理

# 运行数据库迁移
./deploy.sh migrate

# 查看数据库状态
./deploy.sh db-status

# 备份数据
./deploy.sh backup /path/to/backup

# 恢复数据
./deploy.sh restore /path/to/backup

服务管理

# 停止服务
./deploy.sh stop

# 重启服务
./deploy.sh restart

# 更新服务
./deploy.sh update

# 清理资源
./deploy.sh clean

🌐 服务端口配置

默认端口

数据库端口

  • MySQL: localhost:3306
  • Redis: localhost:6379

可选服务端口

  • Nginx: localhost:80/443 (生产环境)
  • Prometheus: localhost:9090 (监控)

🔧 环境配置

核心环境变量

# 数据库配置
MYSQL_ROOT_PASSWORD=your_secure_password
MYSQL_PORT=3306

# Redis 配置
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password  # 生产环境

# 应用端口
FASTAPI_PORT=8000
CLIENT_PORT=8001
ADMIN_PORT=8002

# ComfyUI 节点
COMFYUI_NODE_HOST=192.168.1.100
COMFYUI_NODE_PORT=8188

# 安全配置
JWT_SECRET_KEY=your-super-secret-jwt-key
ADMIN_DEFAULT_PASSWORD=admin123456

# 资源限制
APP_MEMORY_LIMIT=4G
APP_CPU_LIMIT=2.0

🏗️ 容器架构

服务组件

  • comfyui-web: 主应用容器(FastAPI + Celery + 前端服务)
  • mysql: MySQL 8.0 数据库容器
  • redis: Redis 7 缓存容器
  • nginx: Nginx 反向代理容器(可选)

数据持久化

  • mysql_data: MySQL 数据持久化
  • redis_data: Redis 数据持久化
  • comfyui_logs: 应用日志持久化
  • comfyui_temp: 临时文件存储

⚙️ 配置说明

🔧 主配置文件 (backend/config.yaml)

数据库配置

# MySQL 三分离数据库配置
mysql:
  client:
    host: localhost
    port: 3306
    user: root
    password: "your_secure_password"
    database: comfyui_client
    charset: utf8mb4
    pool_size: 10
    max_overflow: 20
  admin:
    host: localhost
    port: 3306
    user: root
    password: "your_secure_password"
    database: comfyui_admin
    charset: utf8mb4
    pool_size: 5
    max_overflow: 10
  shared:
    host: localhost
    port: 3306
    user: root
    password: "your_secure_password"
    database: comfyui_shared
    charset: utf8mb4
    pool_size: 15
    max_overflow: 30

# Redis 缓存配置
redis:
  host: localhost
  port: 6379
  db: 0
  password: ""  # 生产环境建议设置密码
  max_connections: 50
  socket_timeout: 5

分布式节点配置

# 分布式配置
distributed:
  enabled: true  # 启用分布式模式

# 节点发现和管理
nodes:
  discovery_mode: "static"  # static | dynamic | hybrid

  # 静态节点配置
  static_nodes:
    - node_id: "comfyui-worker-1"
      host: "192.168.1.101"
      port: 8188
      max_concurrent: 4
      capabilities: ["text_to_image", "image_to_video"]
      weight: 1.0
      tags: ["gpu", "rtx4090"]

    - node_id: "comfyui-worker-2"
      host: "192.168.1.102"
      port: 8188
      max_concurrent: 2
      capabilities: ["text_to_image"]
      weight: 0.5
      tags: ["gpu", "rtx3080"]

  # 健康检查配置
  health_check:
    interval: 30      # 检查间隔(秒)
    timeout: 5        # 超时时间(秒)
    retry_attempts: 3 # 重试次数
    heartbeat_timeout: 60  # 心跳超时(秒)

  # 负载均衡配置
  load_balancing:
    strategy: "least_loaded"  # round_robin | least_loaded | weighted | random
    enable_failover: true     # 启用故障转移
    failover_threshold: 3     # 故障转移阈值

工作流配置

# 任务类型和工作流配置
task_types:
  text_to_image:
    workflows:
      sd_basic:
        workflow_file: "workflows/text_to_image/文生图.json"
        parameter_mapping:
          prompt:
            node_id: "314"
            input_name: "text"
            default_value: ""
          negative_prompt:
            node_id: "315"
            input_name: "text"
            default_value: ""
          width:
            node_id: "135"
            input_name: "width"
            default_value: 512
          height:
            node_id: "135"
            input_name: "height"
            default_value: 512
          batch_size:
            node_id: "135"
            input_name: "batch_size"
            default_value: 1

      sdxl_basic:
        workflow_file: "workflows/text_to_image/SDXL文生图.json"
        parameter_mapping:
          prompt:
            node_id: "6"
            input_name: "text"
            default_value: ""
          width:
            node_id: "5"
            input_name: "width"
            default_value: 1024
          height:
            node_id: "5"
            input_name: "height"
            default_value: 1024

  image_to_video:
    workflows:
      svd_basic:
        workflow_file: "workflows/image_to_video/图生视频.json"
        parameter_mapping:
          image_path:
            node_id: "1"
            input_name: "image"
            default_value: ""
          duration:
            node_id: "2"
            input_name: "frames"
            default_value: 25
          fps:
            node_id: "3"
            input_name: "fps"
            default_value: 8

系统配置

# 服务器配置
server:
  host: "0.0.0.0"
  port: 8000
  debug: false
  workers: 4

# 安全配置
security:
  jwt_secret_key: "your-super-secret-jwt-key"
  jwt_algorithm: "HS256"
  jwt_expire_hours: 24
  cors_origins: ["*"]  # 生产环境请限制具体域名

# 文件管理配置
file_management:
  upload_dir: "uploads"
  output_dir: "outputs"
  max_file_size: "100MB"
  allowed_extensions: [".png", ".jpg", ".jpeg", ".gif", ".mp4"]
  cleanup_interval: 3600  # 清理间隔(秒)

# 日志配置
logging:
  level: "INFO"
  format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
  file: "logs/app.log"
  max_size: "10MB"
  backup_count: 5

🌐 访问服务

🔗 服务地址

主要服务

  • 🎨 客户端界面: http://localhost:8001

    • Vue.js 响应式界面,支持移动端
    • 任务提交、进度监控、结果查看
    • 用户注册、登录、个人中心
  • 🛠️ 管理后台: http://localhost:8002

    • Vue.js 管理界面,功能完整
    • 系统监控、节点管理、用户管理
    • 工作流配置、模型管理
  • 📚 API 文档: http://localhost:8000/docs

    • Swagger UI 交互式文档
    • 完整的 API 接口说明
    • 在线测试功能
  • 💓 健康检查: http://localhost:8000/health

    • 系统健康状态监控
    • 服务可用性检查
    • 依赖服务状态

数据库服务

  • 🗄️ MySQL: localhost:3306
  • ⚡ Redis: localhost:6379

🎯 客户端界面功能

🎨 内容生成

  • 文生图: 支持 SD 1.5、SDXL 模型
  • 图生视频: SVD 模型视频生成
  • 批量生成: 支持批量任务提交
  • 实时预览: WebSocket 实时进度更新

👤 用户功能

  • 用户注册: 简单的用户注册流程
  • 会话管理: 安全的登录会话控制
  • 任务历史: 完整的任务历史记录
  • 文件管理: 上传文件和生成结果管理

📱 界面特性

  • 响应式设计: 支持桌面和移动设备
  • 暗色主题: 现代化的界面设计
  • 实时更新: 任务状态实时推送
  • 图片预览: 高质量图片预览和下载

🛠️ 管理后台功能

📊 系统监控

  • 仪表板: 系统概览和实时统计
  • 性能监控: CPU、内存、GPU 使用率
  • 任务统计: 任务成功率、处理时间统计
  • 错误监控: 系统错误和异常监控

🖥️ 节点管理

  • 节点状态: 实时节点状态监控
  • 负载均衡: 负载均衡策略配置
  • 健康检查: 节点健康检查配置
  • 故障转移: 自动故障转移设置

📋 任务管理

  • 任务队列: 实时任务队列监控
  • 任务历史: 完整的任务执行历史
  • 任务重试: 失败任务重新执行
  • 任务优先级: 任务优先级管理

👥 用户管理

  • 用户列表: 客户端用户管理
  • 权限控制: 用户权限和配额管理
  • 访问日志: 用户访问日志查看
  • 会话管理: 用户会话状态管理

⚙️ 系统配置

  • 工作流管理: 工作流模板配置
  • 模型管理: AI 模型版本管理
  • 参数配置: 系统参数动态配置
  • 备份恢复: 数据备份和恢复管理

🗄️ 数据库管理

  • 迁移状态: 数据库迁移状态查看
  • 数据统计: 数据库表统计信息
  • 连接监控: 数据库连接状态监控
  • 性能分析: 数据库查询性能分析

🔐 认证和安全

客户端认证

# 用户注册
POST /api/v2/auth/register
{
  "username": "test_user",
  "password": "secure_password",
  "nickname": "测试用户"
}

# 用户登录
POST /api/v2/auth/login
{
  "username": "test_user",
  "password": "secure_password"
}

管理后台认证

# 管理员登录
POST /admin/auth/login
{
  "username": "admin",
  "password": "admin123456"
}

API 认证

# 使用 JWT Token 访问 API
curl -H "Authorization: Bearer <your_jwt_token>" \
     http://localhost:8000/api/v2/tasks/

📁 项目结构

🏗️ 完整目录结构

ComfyUI-Web-Service/
├── README.md                           # 项目主文档
├── requirements.txt                    # Python 依赖包
├── LICENSE                             # 开源许可证
├── .gitignore                          # Git 忽略文件
│
├── backend/                            # 🚀 后端应用
│   ├── config.yaml                     # 主配置文件
│   ├── main_v2.py                      # FastAPI 应用入口
│   ├── app/                            # 应用核心代码
│   │   ├── __init__.py
│   │   ├── admin_api/                  # 管理后台 API
│   │   │   ├── __init__.py
│   │   │   ├── routes.py               # 管理后台路由
│   │   │   └── schemas.py              # 管理后台数据模型
│   │   ├── api/                        # 客户端 API
│   │   │   ├── __init__.py
│   │   │   ├── routes.py               # 客户端路由
│   │   │   └── schemas.py              # 客户端数据模型
│   │   ├── auth/                       # 认证授权
│   │   │   ├── __init__.py
│   │   │   ├── jwt_handler.py          # JWT 处理
│   │   │   └── dependencies.py         # 认证依赖
│   │   ├── core/                       # 核心业务逻辑
│   │   │   ├── __init__.py
│   │   │   ├── config.py               # 配置管理
│   │   │   ├── node_manager.py         # 节点管理
│   │   │   ├── load_balancer.py        # 负载均衡
│   │   │   └── task_manager.py         # 任务管理
│   │   ├── database/                   # 数据库层
│   │   │   ├── __init__.py
│   │   │   ├── connection.py           # 数据库连接
│   │   │   ├── models/                 # ORM 模型
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base.py             # 基础模型
│   │   │   │   ├── client_models.py    # 客户端模型
│   │   │   │   ├── admin_models.py     # 管理端模型
│   │   │   │   └── shared_models.py    # 共享模型
│   │   │   └── repositories/           # 数据访问层
│   │   ├── processors/                 # 任务处理器
│   │   │   ├── __init__.py
│   │   │   ├── text_to_image.py        # 文生图处理器
│   │   │   ├── image_to_video.py       # 图生视频处理器
│   │   │   └── workflow_processor.py   # 工作流处理器
│   │   ├── queue/                      # 任务队列
│   │   │   ├── __init__.py
│   │   │   ├── celery_app.py           # Celery 应用
│   │   │   └── tasks.py                # 异步任务
│   │   ├── services/                   # 业务服务层
│   │   │   ├── __init__.py
│   │   │   ├── task_service.py         # 任务服务
│   │   │   ├── user_service.py         # 用户服务
│   │   │   └── file_service.py         # 文件服务
│   │   └── utils/                      # 工具函数
│   │       ├── __init__.py
│   │       ├── logger.py               # 日志工具
│   │       ├── validators.py           # 验证工具
│   │       └── helpers.py              # 辅助函数
│   ├── outputs/                        # 生成文件输出目录
│   ├── uploads/                        # 用户上传文件目录
│   ├── workflows/                      # ComfyUI 工作流文件
│   │   ├── text_to_image/              # 文生图工作流
│   │   └── image_to_video/             # 图生视频工作流
│   └── logs/                           # 应用日志目录
│
├── frontend/                           # 💻 前端应用
│   ├── client/                         # Vue.js 客户端
│   │   ├── public/                     # 静态资源
│   │   ├── src/                        # 源代码
│   │   │   ├── components/             # Vue 组件
│   │   │   ├── views/                  # 页面视图
│   │   │   ├── store/                  # Pinia 状态管理
│   │   │   ├── router/                 # Vue Router
│   │   │   ├── utils/                  # 工具函数
│   │   │   ├── styles/                 # 样式文件
│   │   │   └── main.js                 # 应用入口
│   │   ├── package.json                # 依赖配置
│   │   └── vite.config.js              # Vite 配置
│   └── admin/                          # Vue.js 管理后台
│       ├── public/                     # 静态资源
│       ├── src/                        # 源代码
│       │   ├── components/             # Vue 组件
│       │   ├── views/                  # 页面视图
│       │   ├── store/                  # 状态管理
│       │   └── main.js                 # 应用入口
│       └── package.json                # 依赖配置
│
├── database/                           # 🗄️ 数据库管理
│   ├── README.md                       # 数据库使用说明
│   ├── setup_databases.sql             # 数据库初始化脚本
│   ├── schema/                         # 数据库结构文件
│   │   ├── README.md                   # 结构文件说明
│   │   ├── client_database.sql         # 客户端数据库结构
│   │   ├── admin_database.sql          # 管理后台数据库结构
│   │   └── shared_database.sql         # 共享数据库结构
│   ├── migrations/                     # 数据库迁移文件
│   │   ├── README.md                   # 迁移系统说明
│   │   ├── client/                     # 客户端数据库迁移
│   │   ├── admin/                      # 管理后台数据库迁移
│   │   └── shared/                     # 共享数据库迁移
│   └── tools/                          # 数据库管理工具
│       ├── db_manager.py               # 主要数据库管理工具
│       ├── migration_manager.py        # 迁移管理器
│       └── create_migration.py         # 创建迁移文件工具
│
├── docker/                             # 🐳 Docker 容器化配置
│   ├── Dockerfile                      # 主应用镜像构建文件
│   ├── docker-compose.yml             # 开发环境配置
│   ├── docker-compose.prod.yml        # 生产环境配置
│   ├── deploy.sh                       # 智能部署管理脚本
│   ├── start.sh                        # 容器启动脚本
│   ├── wait-for-it.sh                  # 服务依赖等待脚本
│   ├── .env                            # 环境变量模板
│   ├── logging.yaml                    # 日志配置
│   ├── mysql/                          # MySQL 配置
│   │   └── my.cnf                      # MySQL 优化配置
│   ├── redis/                          # Redis 配置
│   │   └── redis.conf                  # Redis 优化配置
│   ├── nginx/                          # Nginx 配置
│   │   ├── nginx.conf                  # 开发环境配置
│   │   └── nginx.prod.conf             # 生产环境配置
│   └── monitoring/                     # 监控配置 (可选)
│       └── prometheus.yml              # Prometheus 配置
│
├── scripts/                            # 🔧 启动脚本
│   ├── start_client.py                 # 客户端服务启动
│   ├── start_admin.py                  # 管理后台服务启动
│   └── start_all.bat                   # Windows 一键启动脚本
│
└── docs/                               # 📚 项目文档
    ├── Docker容器化部署指南.md          # Docker 部署指南
    ├── 项目结构说明.md                  # 项目结构详细说明
    ├── 项目更新说明.md                  # 项目更新日志
    └── API接口文档.md                   # API 接口文档

🎯 核心模块说明

🚀 后端核心 (backend/app/)

  • API 层: 提供 RESTful API 接口,支持客户端和管理后台
  • 认证层: JWT 认证,用户会话管理,权限控制
  • 业务层: 核心业务逻辑,任务管理,节点管理,负载均衡
  • 数据层: ORM 模型,数据库连接,数据访问层
  • 队列层: Celery 异步任务处理,分布式任务调度

💻 前端应用 (frontend/)

  • 客户端: Vue.js 3 + Vite,响应式设计,实时任务监控
  • 管理后台: Vue.js 3 管理界面,系统监控,配置管理
  • 组件化: 可复用的 Vue 组件,统一的设计系统

🗄️ 数据管理 (database/)

  • 三分离架构: 客户端、管理端、共享数据独立存储
  • 版本化迁移: 完整的数据库迁移系统,支持版本控制
  • 管理工具: 命令行数据库管理工具,自动化运维

🐳 容器化 (docker/)

  • 多环境支持: 开发、测试、生产环境配置分离
  • 服务编排: Docker Compose 多服务协调
  • 自动化部署: 智能部署脚本,一键部署和管理

🔧 高级功能

数据库迁移

# 查看迁移状态
python database/tools/db_manager.py migration-status

# 创建新迁移
python database/tools/create_migration.py create add_new_field --database client

# 执行迁移
python database/tools/db_manager.py migrate

Docker 管理

# 查看服务状态
./docker/deploy.sh status

# 查看日志
./docker/deploy.sh logs

# 备份数据
./docker/deploy.sh backup

# 更新服务
./docker/deploy.sh update

工作流配置

系统通过配置文件管理工作流参数映射:

task_types:
  text_to_image:
    workflows:
      sd_basic:
        workflow_file: "workflows/text_to_image/文生图.json"
        parameter_mapping:
          prompt:
            node_id: "314"
            input_name: "text"
            default_value: ""
          width:
            node_id: "135"
            input_name: "width"
            default_value: 512

参数优先级

  1. 前端提交参数 (最高优先级)
  2. 配置文件默认值
  3. 工作流原始值 (最低优先级)

🔐 身份认证

客户端认证

# 1. 创建客户端
POST /api/v2/auth/register
{
  "client_name": "test_client",
  "description": "测试客户端"
}

# 2. 获取访问令牌
POST /api/v2/auth/token
{
  "client_id": "your_client_id",
  "client_secret": "your_client_secret"
}

管理后台认证

POST /admin/auth/login
{
  "username": "admin",
  "password": "admin"
}

📡 新增API接口

图生视频接口

POST /api/v2/tasks/image-to-video
Content-Type: application/json
Authorization: Bearer <token>

{
  "image_path": "path/to/image.png",
  "duration": 30,
  "fps": 30,
  "workflow_name": "image_to_video_basic"
}

SDXL文生图接口

POST /api/v2/tasks/text-to-image-sdxl
Content-Type: application/json
Authorization: Bearer <token>

{
  "prompt": "a beautiful landscape",
  "negative_prompt": "blurry, low quality",
  "width": 1024,
  "height": 1024,
  "workflow_name": "sdxl_basic"
}

🔍 监控和调试

性能监控

# 查看节点性能指标
GET /api/v2/admin/performance/nodes

# 查看任务执行统计
GET /api/v2/admin/performance/tasks

日志管理

  • 系统日志: backend/logs/system.log
  • 访问日志: backend/logs/access.log
  • 错误日志: backend/logs/error.log
  • Celery 日志: backend/logs/celery.log

🚨 故障排除

Docker 环境问题

  1. 容器启动失败

    # 查看容器日志
    ./docker/deploy.sh logs
    
    # 检查服务状态
    ./docker/deploy.sh status
  2. 数据库连接失败

    # 检查数据库容器状态
    docker-compose ps mysql
    
    # 查看数据库日志
    docker-compose logs mysql
  3. 端口冲突

    # 修改 .env 文件中的端口配置
    FASTAPI_PORT=8080
    CLIENT_PORT=8081
    ADMIN_PORT=8082

传统部署问题

  1. ComfyUI 连接失败

    • 检查 ComfyUI 是否正常运行
    • 验证配置文件中的 host 和 port
  2. Redis 连接失败

    • 确保 Redis 服务已启动
    • 检查防火墙设置
  3. 工作流执行失败

    • 检查工作流文件路径
    • 验证参数映射配置
    • 查看 Celery Worker 日志
  4. 数据库连接问题

    # 检查数据库状态
    python database/tools/db_manager.py status
    
    # 运行迁移
    python database/tools/db_manager.py migrate
  5. 认证失败

    • 检查token是否过期
    • 验证client_id和client_secret
    • 确认请求头格式正确

性能优化

  • 调整 Celery Worker 数量
  • 配置 Redis 内存限制
  • 优化工作流参数
  • 使用 Docker 资源限制

🤝 贡献指南

  1. Fork 项目
  2. 创建功能分支
  3. 提交更改
  4. 发起 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🙏 致谢

  • ComfyUI - 强大的 AI 图像生成工具
  • FastAPI - 现代化的 Python Web 框架
  • Celery - 分布式任务队列
  • Vue.js - 渐进式 JavaScript 框架

About

一个基于 FastAPI 和 Celery 的 ComfyUI 分布式 Web 服务系统,支持多种 AI 内容生成任务的统一管理和调度。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published