Skip to content

Latest commit

 

History

History
153 lines (118 loc) · 3.93 KB

File metadata and controls

153 lines (118 loc) · 3.93 KB

并发任务限制功能 - 更新摘要

更新日期

2026-04-10

功能描述

添加了并发任务限制机制,当系统中有5个或更多图片生成任务正在执行时,新的生成请求将被拒绝。

修改文件

1. app.py

修改位置: /api/generate 路由(第338-360行)

主要变更:

  • 在增加并发计数器之前,先检查当前并发数量
  • 如果 generating_count >= 5,返回 HTTP 429 错误
  • 错误信息包含当前任务数量和最大限制提示

代码片段:

# 检查当前正在生成的任务数量
global generating_count
with count_lock:
    current_count = generating_count
    if current_count >= 5:
        return jsonify({
            "success": False,
            "error": f"当前已有 {current_count} 个任务正在生成中,请稍后再试(最多允许5个并发任务)"
        }), 429
    # 增加并发计数
    generating_count += 1

2. static/index.html

修改位置:

  • 状态面板显示(第1150-1157行)
  • 定期更新函数(第1224行)
  • 错误处理逻辑(第1308-1316行)

主要变更:

  • 在显示并发任务数量时添加"(最多允许5个并发任务)"提示
  • 优化429错误的用户提示信息
  • 添加重试建议

代码片段:

// 状态显示
genDiv.innerHTML = `<span style="color: #856404;">🔄 当前有 <strong>${count}</strong> 个任务正在生成中... (最多允许5个并发任务)</span>`;

// 错误处理
if (response.status === 429) {
    alert('生成失败: ' + result.error + '\n\n提示: 您可以稍等片刻后再次尝试生成。');
}

3. README.md

修改位置: API 接口文档部分(第184-217行)

主要变更:

  • /api/generate 接口说明中添加并发限制注意事项
  • 添加成功响应和并发限制响应的示例

4. 新增文件

docs/CONCURRENT_LIMIT_FEATURE.md

完整的功能文档,包含:

  • 功能概述
  • 技术实现细节
  • API 接口说明
  • 用户体验设计
  • 测试方法
  • 配置说明
  • 未来改进方向

test_concurrent_limit.py

自动化测试脚本,用于验证并发限制功能:

  • 同时发送6个并发请求
  • 统计成功和被拒绝的请求
  • 验证功能是否正常工作

技术要点

线程安全

  • 使用 threading.Lock() 确保并发计数的原子性操作
  • finally 块中减少计数器,确保异常情况下也能正确清理

HTTP 标准

  • 使用 429 (Too Many Requests) 状态码
  • 符合 RESTful API 设计规范

用户体验

  • 实时显示当前并发任务数量
  • 清晰的错误提示和重试建议
  • 黄色警告框提醒用户系统负载

测试方法

手动测试

  1. 启动服务器:python src/app.py
  2. 快速连续点击"生成图片"按钮6次
  3. 前5次应该正常开始生成
  4. 第6次应该收到错误提示

自动化测试

python test_concurrent_limit.py

预期结果:

  • 5个请求成功或被接受
  • 1个请求被拒绝(429状态码)

影响范围

正面影响

  • ✅ 防止系统过载
  • ✅ 提高系统稳定性
  • ✅ 改善资源分配
  • ✅ 提供更清晰的用户反馈

潜在影响

  • ⚠️ 高并发场景下部分请求会被拒绝
  • ⚠️ 用户可能需要等待更长时间

后续优化建议

  1. 配置化限制值

    • 从 config.json 读取并发限制
    • 允许管理员动态调整
  2. 队列机制

    • 超出的请求进入等待队列
    • 按顺序自动处理
  3. 用户级限制

    • 为不同用户设置不同的并发限制
    • 基于用户ID进行独立计数
  4. 智能提示

    • 显示预计等待时间
    • 提供队列位置信息

兼容性

  • ✅ 向后兼容:现有功能不受影响
  • ✅ API 兼容:只添加了新的错误情况
  • ✅ 前端兼容:优雅降级处理

相关文档