feat: 分块断点续传上传 — 20MB/块 + 分块级重试 + 断点查询
Edge 端新增 3 个端点:
- POST /api/edge/video/chunk: 接收单块,保存到 task_{id}/chunk_{index:04d}
- GET /api/edge/video/chunks: 查询已上传分块(断点续传)
- POST /api/edge/video/assemble: 合并全部分块入队
NAS Dispatcher 重写:
- 大文件(>50MB)自动分块上传(20MB/块)
- 每块最多重试 3 次(分块级重试,非整文件级)
- 上传前查询已上传分块,跳过已有的(断点续传)
- 全部上传后调 /assemble 合并入队
- 小文件(<=50MB)走直接上传路径
- max_retries 3→5(文件级重试次数)
- scheduler 切回生产目录
解决: 360MB 视频跨公网单次上传超时/断连问题
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
# FAM-Core 配置文件 (NAS 端) - 实际部署配置
|
||||
# 注: Tailscale 防火墙待修复,当前 edge_url 使用 Oracle 公网 IP
|
||||
# 异步队列模式: NAS 上传视频到 Edge /api/edge/video/enqueue 入队 → Edge 消费者异步处理
|
||||
# → NAS Poller 定期从 /api/edge/results 拉取结果写库
|
||||
# 异步队列模式 + 分块断点续传:
|
||||
# 小文件(<=50MB): 直接上传 /enqueue
|
||||
# 大文件(>50MB): 分块(20MB/块)上传 /chunk → /assemble 合并入队
|
||||
# → NAS Poller 定期从 /api/edge/results 拉取结果写库
|
||||
# Ollama 未对外暴露,chat_handler 通过 FAM-Edge 代理
|
||||
|
||||
server:
|
||||
@@ -18,9 +20,8 @@ database:
|
||||
|
||||
scheduler:
|
||||
scan_interval: 60
|
||||
# E2E 测试期间指向独立测试目录(正式目录 /volume1/surveillance 有 285 个历史视频,
|
||||
# 全量建任务会导致 100GB 跨公网上传,待与用户确认回补策略后再切回)
|
||||
video_dir: "/volume1/web/sentinel-home-ai/e2e-test"
|
||||
# 正式目录 /volume1/surveillance/Generic_ONVIF-001
|
||||
video_dir: "/volume1/surveillance/Generic_ONVIF-001"
|
||||
video_extensions: [".mp4", ".mkv", ".avi"]
|
||||
file_stable_seconds: 60
|
||||
camera_name: "客厅"
|
||||
@@ -28,9 +29,8 @@ scheduler:
|
||||
dispatcher:
|
||||
poll_interval: 30
|
||||
edge_url: "http://129.146.203.203:5000/api/edge/video/enqueue"
|
||||
max_retries: 3
|
||||
upload_timeout: 300 # 仅视频上传时间(不含 AI 处理)
|
||||
stale_timeout: 600 # PROCESSING 超时回收(10分钟,Edge 处理 + 队列等待)
|
||||
max_retries: 5 # 文件级重试次数(分块级重试另计,每块3次)
|
||||
stale_timeout: 600 # PROCESSING 超时回收(10分钟)
|
||||
|
||||
poller:
|
||||
poll_interval: 30
|
||||
|
||||
Reference in New Issue
Block a user