Edge端: - 新增 SQLite 异步任务队列 (queue_manager + consumer) - 新增 TokenBucket 速率限制器 (Gemini 1000 RPM, NVIDIA 40 RPM, burst 2x) - 新增 /api/edge/video/enqueue + /api/edge/results 端点 - 消费者线程从队列消费任务,按速率限制调用AI模型 - orchestrator 集成 rate_limiter,Gemini优先→NVIDIA兜底 NAS端: - Dispatcher 重构为 enqueue 模式(上传后立即返回,不等结果) - 新增 Poller 线程(定期从Edge拉取结果写 MariaDB) - app.py 启动 Poller,config.yaml 新增 poller 配置 - db_layer 更新 valid_stages 添加 'process'
50 lines
1.6 KiB
YAML
50 lines
1.6 KiB
YAML
# FAM-Core 配置文件 (NAS 端) - 实际部署配置
|
||
# 注: Tailscale 防火墙待修复,当前 edge_url 使用 Oracle 公网 IP
|
||
# 异步队列模式: NAS 上传视频到 Edge /api/edge/video/enqueue 入队 → Edge 消费者异步处理
|
||
# → NAS Poller 定期从 /api/edge/results 拉取结果写库
|
||
# Ollama 未对外暴露,chat_handler 通过 FAM-Edge 代理
|
||
|
||
server:
|
||
host: "0.0.0.0"
|
||
port: 8000
|
||
|
||
database:
|
||
host: "127.0.0.1"
|
||
port: 3306
|
||
user: "root"
|
||
password: "iLoveJava5!"
|
||
database: "sentinel_home_ai"
|
||
unix_socket: "/run/mysqld/mysqld10.sock"
|
||
|
||
scheduler:
|
||
scan_interval: 60
|
||
# E2E 测试期间指向独立测试目录(正式目录 /volume1/surveillance 有 285 个历史视频,
|
||
# 全量建任务会导致 100GB 跨公网上传,待与用户确认回补策略后再切回)
|
||
video_dir: "/volume1/web/sentinel-home-ai/e2e-test"
|
||
video_extensions: [".mp4", ".mkv", ".avi"]
|
||
file_stable_seconds: 60
|
||
camera_name: "客厅"
|
||
|
||
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: 3600 # PROCESSING 超时回收(Edge 处理 + 队列等待)
|
||
|
||
poller:
|
||
poll_interval: 30
|
||
results_url: "http://129.146.203.203:5000/api/edge/results"
|
||
batch_size: 10
|
||
timeout: 30
|
||
|
||
video_server:
|
||
base_url: "http://127.0.0.1:8000/media"
|
||
token: "sentinel-media-2026"
|
||
video_dir: "/volume1/surveillance"
|
||
|
||
chat_handler:
|
||
# 智能问答统一走 FAM-Edge 编排端点(Gemini → NVIDIA → 本地 Ollama 兜底)
|
||
qa_url: "http://129.146.203.203:5000/api/edge/chat/ask"
|
||
timeout: 120
|