prod hardening: admin/metrics authz split, subprocess lifecycle, parallel pool start, HEALTHCHECK
- authz: new ADMIN_TOKEN gates /internal/*; METRICS_PUBLIC=false by default, so /metrics returns 503 when neither METRICS_TOKEN nor API_KEYS is set (previously leaked pool topology). Startup logs loudly if API_KEYS is empty or admin falls back to chat keys. - lingma_client: keep a Popen handle instead of orphaning Lingma with start_new_session, drain stderr to logger at DEBUG, SIGTERM -> 5s grace -> SIGKILL on shutdown. Fixes the zombie-process leak on container reload. - pool: asyncio.gather to start N instances concurrently; N=2 pool shaves ~startup_timeout seconds off boot. - Dockerfile: HEALTHCHECK hits /healthz and greps for pool_ready>0 so Docker / compose orchestrators see "stuck on login" as unhealthy. Made-with: Cursor
This commit is contained in:
@@ -64,7 +64,9 @@ cp .env.example .env
|
||||
- `AUTO_LOGIN_MAX_RETRY`:自动登录重试次数
|
||||
- `LINGMA_USERNAME`:Lingma 登录用户名
|
||||
- `LINGMA_PASSWORD`:Lingma 登录密码
|
||||
- `METRICS_TOKEN`:`/metrics` 独立鉴权 token(留空则 `API_KEYS` 也可访问;两者都留空时 `/metrics` 为公开)
|
||||
- `METRICS_TOKEN`:`/metrics` 独立鉴权 token(留空则 `API_KEYS` 也可访问;两者皆空时 `/metrics` 默认 503,除非显式开 `METRICS_PUBLIC=true`)
|
||||
- `METRICS_PUBLIC`:显式把 `/metrics` 设为公开,仅在私网采集器场景使用(默认 `false`)
|
||||
- `ADMIN_TOKEN`:`/internal/*` 管理端点独立鉴权 token(留空则退化为 `API_KEYS`)。生产环境建议单独配置,这样轮换 `API_KEYS` 不需要重新颁发 session bundle 导出权限
|
||||
- `LOG_LEVEL`:日志级别(默认 `INFO`,输出结构化 JSON,包含 `request_id`)
|
||||
- `GATEWAY_MAX_IN_FLIGHT`:`/v1/chat/completions` 并发上限(默认 4,`<=0` 表示不限流)
|
||||
- `GATEWAY_QUEUE_TIMEOUT_SEC`:排队等待超时秒数(默认 30,超过后直接 429 + `Retry-After`)
|
||||
@@ -236,7 +238,8 @@ curl -s http://127.0.0.1:8317/metrics \
|
||||
- `usage.prompt_tokens/completion_tokens` 为估算值(按字节近似换算)。
|
||||
- 非流式响应里会附带 `usage` 字段。
|
||||
- 流式响应可传 `stream_options: {"include_usage": true}` 让最后一帧返回 `usage`。
|
||||
- `/metrics` 默认需要 Bearer 鉴权:优先匹配 `METRICS_TOKEN`,否则接受 `API_KEYS` 里任意一个;两者都未配置时保持公开。
|
||||
- `/metrics` 默认需要 Bearer 鉴权:优先匹配 `METRICS_TOKEN`,否则接受 `API_KEYS` 里任意一个;两者皆未配置时返回 503,显式 `METRICS_PUBLIC=true` 才公开。
|
||||
- `/internal/*` 管理端点(auto-login, session export, models/raw, stats)默认走 `ADMIN_TOKEN`,未配置时退化为 `API_KEYS`;两者都未配置则 503。
|
||||
|
||||
## 6. 容器内自动登录
|
||||
|
||||
|
||||
Reference in New Issue
Block a user