From b46c0be9ce07a9d12f5ed7331a97208c3a9d15fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Sat, 3 Oct 2026 19:40:24 +0800 Subject: [PATCH] =?UTF-8?q?perf(=E4=BC=9A=E5=91=98):=20=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E4=B8=8E=E8=B4=A6=E5=8F=B7=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=A1=A3=E5=B9=B6=E5=8F=91=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - load_owner_llm_catalog 原串行等待目录与权限档两次 SpacetimeDB 往返,热路径延迟叠加 - 改为 tokio::join! 并发发起;目录错误仍由 catalog? 返回,权限档失败关闭语义不变 --- server-rs/crates/api-server/src/llm/mod.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/server-rs/crates/api-server/src/llm/mod.rs b/server-rs/crates/api-server/src/llm/mod.rs index f25a64ab5..af6fea24c 100644 --- a/server-rs/crates/api-server/src/llm/mod.rs +++ b/server-rs/crates/api-server/src/llm/mod.rs @@ -345,13 +345,20 @@ async fn load_llm_catalog( } /// 全局目录 + 账号权限档;所有对外 LLM 路由都经它解析模型。 +/// +/// 两者相互独立,热路径上用 `join!` 并发发往 SpacetimeDB,避免串行叠加两次往返延迟。 async fn load_owner_llm_catalog( state: &AppState, owner: &str, ) -> Result { - let catalog = load_llm_catalog(state, owner).await?; - let access = resolve_owner_agc_model_access(state, owner).await; - Ok(OwnerAgcModelCatalog { catalog, access }) + let (catalog, access) = tokio::join!( + load_llm_catalog(state, owner), + resolve_owner_agc_model_access(state, owner), + ); + Ok(OwnerAgcModelCatalog { + catalog: catalog?, + access, + }) } /// 模型解析错误的统一映射:档位不够是 403 + 专用错误码,目录外 / 停用仍是 422。