为原始图片上传解析增加超时

从请求入口开始计算准备截止时间,并限制 multipart 上传解析阶段的最长等待。
This commit is contained in:
2026-09-12 21:33:48 +08:00
parent 274bb1a3d2
commit 462fc856aa
+13 -1
View File
@@ -71,10 +71,22 @@ pub(crate) async fn edit_raw_image(
Extension(authenticated): Extension<AuthenticatedAccessToken>,
multipart: Multipart,
) -> Result<Json<RawImageEditResponse>, 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))