diff --git a/server-rs/crates/api-server/src/raw_image.rs b/server-rs/crates/api-server/src/raw_image.rs index 106698345..0c243e0d1 100644 --- a/server-rs/crates/api-server/src/raw_image.rs +++ b/server-rs/crates/api-server/src/raw_image.rs @@ -71,10 +71,22 @@ pub(crate) async fn edit_raw_image( Extension(authenticated): Extension, multipart: Multipart, ) -> Result, AppError> { - let payload = parse_multipart_request(multipart).await?; let local_deadline = Instant::now() .checked_add(RAW_IMAGE_PREPARE_TIMEOUT) .unwrap_or_else(Instant::now); + let parse_deadline = request_context + .external_call_deadline() + .map(|deadline| deadline.min(local_deadline)) + .unwrap_or(local_deadline); + let payload = match tokio::time::timeout_at( + tokio::time::Instant::from_std(parse_deadline), + parse_multipart_request(multipart), + ) + .await + { + Ok(result) => result?, + Err(_) => return Err(raw_image_prepare_timeout_error("raw 图片请求解析超时")), + }; let processing_deadline = request_context .external_call_deadline() .map(|deadline| deadline.min(local_deadline))