Files
ai_baijiahao/QUEUE_USAGE.md

212 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 任务队列功能使用说明
## 📋 功能概述
新增了任务队列系统,支持**离线处理**、**进度跟踪**和**结果汇总导出**。
## 🚀 启动服务
```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/<id>` - 获取任务详情
- `GET /api/queue/stats` - 获取统计信息
- `GET /api/queue/download/<id>` - 下载结果
---
**享受高效的批量处理!** 🎉