You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Akka HTTP文件上传遇10秒toStrict超时问题求助(配置调整无效)

问题分析

你遇到的10秒超时错误,根源是Akka HTTP默认将请求实体转为**严格实体(Strict Entity)**的超时时间为10秒,而你当前的配置未覆盖这个参数,仅调整了内容长度、请求超时等其他配置,因此问题未解决。

环境信息

  • Scala版本:2.13.8
  • Akka版本:2.6.19
  • Akka HTTP版本:10.2.9

解决方案

提供两种可行方案,任选其一即可:

方案1:全局配置修改

在Akka配置中添加parsing.to-strict-timeout参数,设置足够长的超时时间(建议与请求超时保持一致):

akka.http {
 parsing.max-content-length = 1000m
 parsing.max-to-strict-bytes = 100000m
 parsing.to-strict-timeout = 1500 seconds  # 新增:覆盖默认10秒超时
 server.parsing.max-to-strict-bytes = 100000m
 server.parsing.max-content-length=4096m
 server.request-timeout = 1500 seconds
 server.idle-timeout = 1500 seconds
 client.idle-timeout = 600s
 client.connecting-timeout = 600s
}

方案2:代码中显式指定超时

如果不想全局修改,可在路由中通过toStrictEntity指令单独设置该上传接口的实体转换超时:

import scala.concurrent.duration._

(path("file" / "upload") & post) {
  formFields("formParams") { formParams =>
    // 显式设置实体转换超时为1500秒
    toStrictEntity(1500.seconds) {
      fileUpload("zip") {
        case byteSources =>
          val result = uploadTOS3(formParams, byteSources)
          onSuccess(result){ res =>
            complete(HttpResponse(entity = HttpEntity(ContentTypes.`application/json`, res)))
          }
      }
    }
  }
}

补充说明

  • fileUpload指令内部依赖将multipart请求转为严格实体,若文件上传速度较慢,默认10秒不足以完成转换就会触发超时。
  • 若uploadTOS3方法存在阻塞逻辑,需确保其为异步非阻塞实现,避免间接延长处理时间。

内容的提问来源于stack exchange,提问作者Sky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:23:19