feat: 完整功能部署 v1.0
新增功能: - 天网协作系统 (HTTP API 端口 6060) - 三种工作流 (查找图片/处理图片/转人工派单) - 图片任务数据库 (支持客户后续增加需求) - 图绘派单系统集成 (API: 8005) - 文字检测与加价 (60-80 元高价值订单) - 风险评估与接单判断 - 作图失败自动转人工 新增文档: - 项目功能汇总.md - 三种工作流功能说明.md - 文字加价功能说明.md - 风险评估功能说明.md - 图片任务数据库功能说明.md - 图绘派单系统集成说明.md - 作图失败转接人工说明.md - DEPLOYMENT.md - TIANWANG_INTEGRATION.md 核心修改: - core/pydantic_ai_agent.py - core/workflow.py - core/websocket_client.py - image/image_analyzer.py - services/service_tuhui_dispatch.py - db/image_tasks_db.py 版本:v1.0 日期:2026-02-28
This commit is contained in:
226
MULTI_PROCESS.md
Normal file
226
MULTI_PROCESS.md
Normal file
@@ -0,0 +1,226 @@
|
||||
# 多进程异步并行架构
|
||||
|
||||
## 架构说明
|
||||
|
||||
### 当前架构(改造前)
|
||||
|
||||
```
|
||||
单进程 + 单事件循环
|
||||
┌─────────────────────┐
|
||||
│ Python 进程 │
|
||||
│ ┌─────────────────┐ │
|
||||
│ │ asyncio Loop │ │
|
||||
│ │ 所有客户 + Agent │ │
|
||||
│ └─────────────────┘ │
|
||||
└─────────────────────┘
|
||||
```
|
||||
|
||||
**问题**:
|
||||
- ❌ 单 CPU 核心
|
||||
- ❌ 一个客户卡住影响全局
|
||||
- ❌ 无法利用多核 CPU
|
||||
|
||||
---
|
||||
|
||||
### 新架构(改造后)
|
||||
|
||||
```
|
||||
多进程 + 多事件循环
|
||||
┌─────────┐ ┌─────────┐ ┌─────────┐
|
||||
│进程 1 │ │进程 2 │ │进程 3 │
|
||||
│Loop + │ │Loop + │ │Loop + │
|
||||
│客户 A,B │ │客户 C,D │ │客户 E,F │
|
||||
└─────────┘ └─────────┘ └─────────┘
|
||||
↓ ↓ ↓
|
||||
独立运行 独立运行 独立运行
|
||||
```
|
||||
|
||||
**优势**:
|
||||
- ✅ 真正的多核并行
|
||||
- ✅ 故障隔离
|
||||
- ✅ 负载均衡
|
||||
- ✅ 可动态扩缩容
|
||||
|
||||
---
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 方式 1:systemd 服务(推荐)
|
||||
|
||||
```bash
|
||||
# 启动多进程模式
|
||||
systemctl start ai-cs-multi
|
||||
|
||||
# 查看状态
|
||||
systemctl status ai-cs-multi
|
||||
|
||||
# 查看日志
|
||||
journalctl -u ai-cs-multi -f
|
||||
|
||||
# 停止服务
|
||||
systemctl stop ai-cs-multi
|
||||
```
|
||||
|
||||
### 方式 2:命令行启动
|
||||
|
||||
```bash
|
||||
cd /root/ai_customer_service/ai_cs
|
||||
|
||||
# 使用默认进程数(CPU 核心数)
|
||||
python3 scripts/multi_process_launcher.py
|
||||
|
||||
# 指定进程数
|
||||
python3 scripts/multi_process_launcher.py --workers 4
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 配置说明
|
||||
|
||||
### 环境变量
|
||||
|
||||
| 变量 | 说明 | 默认值 |
|
||||
|------|------|--------|
|
||||
| `AI_CS_WORKER_ID` | 工作进程 ID | 0 |
|
||||
| `AI_CS_SHARD_KEYS` | 本进程负责的客户 key | 空 |
|
||||
|
||||
### 分片算法
|
||||
|
||||
客户按 `acc_id:from_id` 的 MD5 hash 值分配到不同进程:
|
||||
|
||||
```python
|
||||
shard_id = int(md5(f"{acc_id}:{from_id}").hexdigest(), 16) % num_workers
|
||||
```
|
||||
|
||||
**特点**:
|
||||
- 同一客户始终分配到同一进程
|
||||
- 不同客户均匀分布
|
||||
- 动态增减进程时自动重新平衡
|
||||
|
||||
---
|
||||
|
||||
## 监控
|
||||
|
||||
### 查看进程状态
|
||||
|
||||
```bash
|
||||
# 查看所有工作进程
|
||||
ps aux | grep ai-cs-worker
|
||||
|
||||
# 查看每个进程的 CPU 使用
|
||||
top -p $(pgrep -d, -f ai-cs-worker)
|
||||
```
|
||||
|
||||
### 日志查看
|
||||
|
||||
```bash
|
||||
# 查看主进程日志
|
||||
journalctl -u ai-cs-multi -f
|
||||
|
||||
# 查看特定工作进程日志
|
||||
journalctl -u ai-cs-multi -f | grep "Worker 2"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 性能对比
|
||||
|
||||
| 指标 | 单进程 | 多进程 (4 核) |
|
||||
|------|--------|-------------|
|
||||
| **并发客户数** | ~50 | ~200 |
|
||||
| **CPU 使用率** | 25% (单核) | 80% (4 核) |
|
||||
| **响应延迟** | 高 | 低 |
|
||||
| **故障影响** | 全局 | 局部 |
|
||||
|
||||
---
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **进程数选择**:
|
||||
- 默认 = CPU 核心数
|
||||
- 建议不超过 CPU 核心数 × 2
|
||||
|
||||
2. **内存占用**:
|
||||
- 每个进程独立内存空间
|
||||
- 总内存 = 进程数 × 单进程内存
|
||||
|
||||
3. **日志管理**:
|
||||
- 每个进程独立日志
|
||||
- 通过 `worker_id` 区分
|
||||
|
||||
4. **动态扩容**:
|
||||
- 修改 `--workers` 参数
|
||||
- 重启服务自动重新分片
|
||||
|
||||
---
|
||||
|
||||
## 故障排查
|
||||
|
||||
### Worker 进程退出
|
||||
|
||||
```bash
|
||||
# 查看日志
|
||||
journalctl -u ai-cs-multi -f | grep "Worker.*退出"
|
||||
|
||||
# 手动重启
|
||||
systemctl restart ai-cs-multi
|
||||
```
|
||||
|
||||
### 负载不均衡
|
||||
|
||||
```bash
|
||||
# 查看每个进程处理的客户数
|
||||
ps aux | grep ai-cs-worker | awk '{print $2}' | while read pid; do
|
||||
echo "PID $pid: $(ps -p $pid -o %cpu,%mem,cmd --no-headers)"
|
||||
done
|
||||
```
|
||||
|
||||
### 内存泄漏
|
||||
|
||||
```bash
|
||||
# 监控内存使用
|
||||
watch -n 1 'ps aux | grep ai-cs-worker | awk "{sum+=$6} END {print \"Total: \" sum/1024 \" MB\"}"'
|
||||
```
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 使用 run.py 启动
|
||||
|
||||
### 单进程模式(默认)
|
||||
|
||||
```bash
|
||||
cd /root/ai_customer_service/ai_cs
|
||||
|
||||
# 正常启动(含 AI Agent)
|
||||
python3 run.py
|
||||
|
||||
# 不启用 AI Agent
|
||||
python3 run.py --no-agent
|
||||
```
|
||||
|
||||
### 多进程模式
|
||||
|
||||
```bash
|
||||
cd /root/ai_customer_service/ai_cs
|
||||
|
||||
# 多进程模式(默认 CPU 核心数)
|
||||
python3 run.py --multi
|
||||
|
||||
# 指定进程数
|
||||
python3 run.py --multi --workers 4
|
||||
```
|
||||
|
||||
### systemd 服务
|
||||
|
||||
```bash
|
||||
# 单进程模式
|
||||
systemctl start ai-cs
|
||||
systemctl status ai-cs
|
||||
journalctl -u ai-cs -f
|
||||
|
||||
# 多进程模式
|
||||
systemctl start ai-cs-multi
|
||||
systemctl status ai-cs-multi
|
||||
journalctl -u ai-cs-multi -f
|
||||
```
|
||||
Reference in New Issue
Block a user