Initial commit: 百家号文章采集系统
This commit is contained in:
211
QUEUE_USAGE.md
Normal file
211
QUEUE_USAGE.md
Normal file
@@ -0,0 +1,211 @@
|
||||
# 任务队列功能使用说明
|
||||
|
||||
## 📋 功能概述
|
||||
|
||||
新增了任务队列系统,支持**离线处理**、**进度跟踪**和**结果汇总导出**。
|
||||
|
||||
## 🚀 启动服务
|
||||
|
||||
```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>` - 下载结果
|
||||
|
||||
---
|
||||
|
||||
**享受高效的批量处理!** 🎉
|
||||
Reference in New Issue
Block a user