pub async fn admin_shutdown() -> Result<Json<Value>, (StatusCode, Json<Value>)>Expand description
POST /api/admin/shutdown — 优雅退出
返回 200 给客户端后 spawn 一个异步 task,1 秒后 std::process::exit(0)。
1 秒延迟给 HTTP 响应写回 socket + 客户端收到确认的时间。
为什么不做更精细的 drain(等正在执行的 trade 请求完成):
- opend 典型部署在 systemd / Docker 里,shutdown 语义就是“让进程退出, supervisor 按策略决定是否重启“。
- 正在执行的 broker trade 请求 client 端自己会超时重试,drain 没明显收益。
- 并发场景(例如 LLM 同时 100 个 GetFunds)drain 逻辑复杂度 >> 简单 exit。
如果未来真需要 drain:可以加 shutdown flag,listener 进 “拒新收旧” 状态, 等所有 in-flight 完成再 exit(类似 nginx -s quit)。目前不做。