增加了并发功能!
更新日志 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- 获取标签页池状态
⚠️ 注意事项
- Cookie 隔离:同一网站的不同标签页共享 Cookie(这是浏览器特性),不同网站的标签页 Cookie 自动隔离
- 隐身模式:使用剪贴板粘贴时会短暂加锁,可能略微影响并发性能
- 内存占用:每个标签页约占用 100-200MB 内存,请根据服务器配置调整
max_tabs
🐛 修复
- 修复了标签页池初始化时的竞态条件(双重检查锁)