# 任务队列功能使用说明 ## 📋 功能概述 新增了任务队列系统,支持**离线处理**、**进度跟踪**和**结果汇总导出**。 ## 🚀 启动服务 ```bash # 开发环境 python app.py # 生产环境(推荐) bash start.sh ``` 启动时会自动: - ✅ 创建必要的目录(data/, data/results/) - ✅ 启动后台任务处理器 - ✅ 自动处理队列中的任务 ## 💡 使用方式 ### 方式1:即时导出(原有功能) 1. 填写百家号URL和参数 2. 点击**"即时导出"**按钮 3. 同步等待处理完成 4. 立即下载结果 **适用场景:** 需要立即获取结果 --- ### 方式2:队列处理(新功能)⭐ 1. 填写百家号URL和参数 2. 点击**"添加到队列"**按钮 3. 任务加入队列,后台慢慢处理 4. 可以继续添加其他任务 5. 在"任务队列"页面查看进度 6. 完成后下载结果 **适用场景:** - 批量处理多个账号 - 不需要立即获取结果 - 避免长时间等待阻塞 ## 📊 任务队列管理页面 点击顶部的**"任务队列"**按钮进入管理页面,可以: ### 1. 查看统计信息 - 总任务数 - 等待中任务数 - 处理中任务数 - 已完成任务数 - 失败任务数 ### 2. 筛选任务 - 全部任务 - 等待中 - 处理中 - 已完成 - 失败 ### 3. 查看任务详情 每个任务显示: - 百家号URL - 任务状态 - 处理进度(0-100%) - 当前步骤说明 - 时间范围 - 创建时间 - 文章总数 - 是否使用代理 ### 4. 下载结果 - 已完成的任务显示"下载结果"按钮 - 点击即可下载Excel文件 ### 5. 自动刷新 - 页面每5秒自动刷新一次 - 实时查看最新进度 ## 🗂️ 数据存储 ### 任务队列文件 ``` data/task_queue.json ``` 存储所有任务的状态、进度、配置等信息 ### 导出结果文件 ``` data/results/百家号文章_{app_id}_{timestamp}.xlsx ``` 每个任务的Excel结果文件 ## 📝 任务处理流程 ``` 用户添加任务 ↓ 加入队列(pending) ↓ 后台处理器检测到任务 ↓ 标记为处理中(processing) ↓ 步骤1: 解析URL获取UK (10%) ↓ 步骤2: 初始化爬虫 (20%) ↓ 步骤3: 获取文章列表 (30%) ↓ 步骤4: 处理文章数据 (50%-90%) ↓ 步骤5: 生成Excel文件 (90%) ↓ 标记为已完成(completed) ↓ 用户下载结果 ``` ## 🔄 任务状态说明 | 状态 | 说明 | 颜色标识 | |------|------|---------| | pending | 等待处理 | 黄色 | | processing | 正在处理 | 蓝色 | | completed | 处理完成 | 绿色 | | failed | 处理失败 | 红色 | ## ⚙️ 技术特性 ### 1. 离线处理 - ✅ 添加任务后无需等待 - ✅ 后台自动处理 - ✅ 支持批量添加 ### 2. 进度跟踪 - ✅ 实时显示进度百分比 - ✅ 显示当前处理步骤 - ✅ 显示已处理文章数 ### 3. 错误处理 - ✅ 失败任务显示错误信息 - ✅ 代理失败自动切换IP - ✅ 反爬检测自动重试 ### 4. 数据持久化 - ✅ 任务状态保存到本地JSON - ✅ 服务重启后继续处理 - ✅ 结果文件永久保存 ### 5. 用户隔离 - ✅ 每个用户只能看到自己的任务 - ✅ 统计信息按用户过滤 - ✅ 下载权限校验 ## 🎯 最佳实践 1. **大批量采集** - 使用"添加到队列" - 一次性添加多个账号 - 让系统慢慢处理 2. **紧急需求** - 使用"即时导出" - 实时获取结果 3. **代理配置** - 默认启用代理IP池 - 系统自动处理反爬 - 检测到反爬立即切换IP 4. **定期清理** - 系统会保留7天内的已完成任务 - 可手动删除旧任务(功能可扩展) ## 🐛 常见问题 **Q: 任务一直处于"等待中"状态?** A: 检查后台处理器是否启动,查看控制台日志 **Q: 任务失败了怎么办?** A: 查看失败原因,修改参数后重新添加任务 **Q: 可以同时处理多少个任务?** A: 目前每次处理1个任务,按队列顺序依次处理 **Q: 结果文件在哪里?** A: `data/results/` 目录下,文件名包含app_id和时间戳 ## 🔧 开发说明 ### 核心文件 - `task_queue.py` - 任务队列管理 - `task_worker.py` - 后台处理器 - `templates/queue.html` - 队列管理页面 - `data/task_queue.json` - 任务数据存储 ### API接口 - `POST /api/queue/add` - 添加任务 - `GET /api/queue/tasks` - 获取任务列表 - `GET /api/queue/task/` - 获取任务详情 - `GET /api/queue/stats` - 获取统计信息 - `GET /api/queue/download/` - 下载结果 --- **享受高效的批量处理!** 🎉