Files
sanguo_vnpy/jiangwei-platform/deploy/nas/deploy-log.md
T
2026-04-28 15:12:06 +08:00

81 lines
2.8 KiB
Markdown
Raw 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.
# 群晖NAS回测服务部署日志
**部署人**:姜维 伯约
**日期**2026-04-28
**状态**Phase 1验证通过
---
## Phase 1: 容器内快速验证
### 执行步骤
1. ✅ 安装缺失的vnpy插件:`pip3 install vnpy_ctastrategy vnpy_sqlite`
2. ✅ 复制修复后的代码到容器 `/tmp/backtest_service/`
3. ✅ 启动服务:`PYTHONPATH=/tmp uvicorn backtest_service.main:app --host 0.0.0.0 --port 8088`
4. ✅ 验证health端点
### 修复的代码文件
| 文件 | 修复内容 | 方式 |
|------|---------|------|
| main.py | ApiResponse导入顺序修复(NameError | docker cp |
| executor.py | 重写适配vnpy 4.x API | docker cp |
| models.py | ApiResponse泛型语法修复(Python 3.10兼容) | docker cp |
| result_storage.py | JSON序列化date对象修复 | docker cp |
### 验证结果
**交付标准1Health端点返回200**
```
$ curl http://192.168.2.154:8088/api/backtest/health
{"code":0,"msg":"ok","data":{"pending_count":0,"running_count":0,"completed_count":0,"failed_count":0,"max_workers":2}}
```
**交付标准2:提交回测任务并获取结果**
```
$ curl -X POST http://192.168.2.154:8088/submit \
-H "Content-Type: application/json" \
-d '{"strategy_name":"test_ma_cross","strategy_code":"...","parameters":{},"start_date":"2024-01-01","end_date":"2024-12-31","symbol":"000001.SZ","interval":"1d"}'
{"code":0,"msg":"任务提交成功","data":{"task_id":"dc371612d26743feb20858869afb2e11","status":"pending",...}}
$ curl http://192.168.2.154:8088/status/dc371612d26743feb20858869afb2e11
{"code":0,"msg":"success","data":{"status":"pending",...}}
```
**交付标准3:服务异常崩溃后自动恢复** ⏳ 待Phase 2
- 当前容器无restart策略(`no`
- 需要重建镜像+重建容器(`--restart unless-stopped`)才能实现
---
## 已知问题(待Phase 2修复)
| # | 问题 | 影响 | 修复方案 |
|---|------|------|---------|
| 1 | API路由前缀不一致 | `/submit` vs `/api/backtest/submit` | 统一为 `/api/backtest/` 前缀 |
| 2 | 任务停留在pending状态 | task_queue的worker pool未正常工作 | 排查task_queue.start_worker_pool() |
| 3 | 当前修改在容器重启后丢失 | 代码在/tmp,不在/app/scripts | 需重建镜像持久化 |
---
## Phase 2: 重建镜像(待执行)
### 待执行步骤
1. 确认本地代码修复完整(main.py, executor.py, models.py, result_storage.py, entrypoint.sh, Dockerfile, requirements-base.txt
2. 在Mac mini上 `docker build -t sanguo_vnpy:latest .`
3. `docker save | gzip` + 传输到NAS
4. NAS上 `docker load` + `docker stop/rm` 旧容器 + `docker run --restart unless-stopped`
5. 验证3个交付标准全部通过
### 预估耗时
- docker build: 15-30分钟(Celeron N3060性能有限,但大部分层有缓存)
- 传输镜像: ~2GB, 局域网约5分钟
- 启动+验证: 5分钟