Skip to content

增加了并发功能!

Choose a tag to compare

@lumingya lumingya released this 31 Dec 09:57
· 254 commits to main since this release
0f0a851

更新日志 v1.1.0

🚀 v1.1.0 - 多任务并发支持

发布日期: 2025-12-31

✨ 新功能

多标签页并发执行

  • 标签页池管理 - 新增 TabPoolManager,支持同时管理多个浏览器标签页
  • 并发请求处理 - 多个请求可同时执行,不再排队等待
  • 自动标签页识别 - 启动时自动扫描并复用浏览器中已打开的标签页
  • 智能分配 - 请求自动分配到空闲标签页,无空闲时自动创建新标签页

配置选项

  • 新增 tab_pool 配置项:
    • max_tabs: 最大标签页数量(默认 5)
    • min_tabs: 最小保留标签页数量(默认 1)
    • idle_timeout: 空闲标签页回收时间(默认 300 秒)
    • acquire_timeout: 获取标签页超时时间(默认 60 秒)

🔧 改进

架构优化

  • RequestManager 重构 - 移除全局执行锁,改为纯请求追踪模式
  • 锁粒度细化 - 每个标签页独立锁,互不阻塞
  • 隐身模式安全 - 剪贴板操作加锁,防止多任务并发时粘贴内容错乱

日志美化

  • 请求 ID 简化:[16260-c3e5] → [req-001]
  • 标签页 ID 简化:tab_81a6b319 → gpt_1、gemini_2
  • 日志输出更简洁易读

📁 文件变更

文件 变更类型 说明
app/core/tab_pool.py 新增 标签页池管理器
app/core/browser.py 修改 集成 TabPoolManager
app/services/request_manager.py 重构 移除全局锁
app/core/workflow.py 修改 添加剪贴板锁
app/api/routes.py 修改 适配新架构
config/browser_config.json 修改 新增 tab_pool 配置

📝 配置示例

{
  "tab_pool": {
    "max_tabs": 5,
    "min_tabs": 1,
    "idle_timeout": 300,
    "acquire_timeout": 60
  }
}

也可通过环境变量配置:

MAX_TABS=5
MIN_TABS=1

🔌 新增 API

  • GET /api/pool/status - 获取标签页池状态

⚠️ 注意事项

  1. Cookie 隔离:同一网站的不同标签页共享 Cookie(这是浏览器特性),不同网站的标签页 Cookie 自动隔离
  2. 隐身模式:使用剪贴板粘贴时会短暂加锁,可能略微影响并发性能
  3. 内存占用:每个标签页约占用 100-200MB 内存,请根据服务器配置调整 max_tabs

🐛 修复

  • 修复了标签页池初始化时的竞态条件(双重检查锁)