UbuntuandClaude bb9f55e93c feat(gateway): 全局串行化(并发=1) + 记录入参/出参/耗时日志
并发模型从「每worker并发1 + 多worker并行」改为全局串行:同一时间
只处理1个请求,其余排队;多 worker 仅作热备(主 worker 坏了才用备机)。
接口4(face/features) 走豆包、不占 GPU,不纳入串行。

- pool: asyncio.Semaphore(max_global_concurrency=1) + acquire/release_global_slot
  (依赖单进程 uvicorn 部署,已在注释中标注)
- forward: proxy_request 最外层 acquire 全局槽、try/finally 全路径释放;
  入参 multipart 解析挂 request.state;原重试/故障转移逻辑抽到 _dispatch_with_retries
- reqlog(新): 标量入参保留;图片(file/base64)存盘转URL,绝不内嵌base64;
  出参递归摘要截断(landmarks/长串/大数组)
- logging_middleware: RequestLogEntry 加 request_params/response_data,
  jsonl 全量记录;_load_from_logfile 同步映射防重启丢字段;get_stats recent 暴露
- /gateway-health 暴露 global_max/global_busy/global_waiting
- config: dispatch 新增 max_global_concurrency / max_queue_wait_seconds
- tests: test_reqlog + test_gateway_serialization(9 用例)

顺带提交此前未提交的网关统计(daily stats 接口)与耗时看板(api_timing_dashboard.html)。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-23 22:56:48 +08:00
2026-07-18 15:30:31 +08:00
2026-07-18 15:30:31 +08:00
2026-07-18 15:30:31 +08:00
2026-07-18 15:30:31 +08:00
2026-06-22 23:23:46 +08:00
2026-07-18 15:30:31 +08:00
2026-07-18 15:30:31 +08:00
2026-06-13 23:04:37 +08:00
2026-07-12 18:50:05 +08:00
2026-06-14 15:04:34 +08:00
2026-06-16 21:15:19 +08:00
2026-06-16 21:16:44 +08:00

文档索引

旷视五接口(四庭七眼测量 / C端生发 / B端生发 / 用户特征 / 发际线PNG)。系统拆成 外网网关 + 高性能 worker(GPU) 两台机器、一个仓库。

文档 作用
实现说明.md 实现总览:架构、五个接口怎么实现、base64→URL 映射、错误码、部署/环境要点。先读这份。
接口文档.md 对外 API 契约(字段 / 错误码)。字段命名的唯一权威。
旷视具体需求.md 原始需求。
../OFFLINE_ASSETS.md worker 离线模型权重/字体清单(内网部署)。

原先分散的「各接口技术方案 / 开发任务书 / 系统架构 / 网关任务书」已合并进 实现说明.md (细节可查 git 历史)。

S
Description
No description provided
Readme
266 MiB
Languages
Python 63.7%
HTML 34.8%
Shell 1.3%
JavaScript 0.2%