为原始图片上传解析增加超时
从请求入口开始计算准备截止时间,并限制 multipart 上传解析阶段的最长等待。
This commit is contained in:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user