如何在Akka HTTP中获取当前服务器请求超时

How to get the current server request timeout in Akka HTTP

Akka HTTP 允许从全局设置中设置请求超时 application.conf 或使用指令在每个路由的基础上进行修改。

如何获取当前请求和路由的请求超时?像

withRequestTimeout(FiniteDuration(5, TimeUnit.SECONDS)) {
  extractRequestTimeout { timeout =>
   complete(s"request would have timed out in $timeout") // request would have timed out in 5 seconds
  }
}

会很完美。

现在可以使用 extractRequestTimeout 指令在 Akka HTTP 中实现。 PR and docs.

val timeout1 = 500.millis
val timeout2 = 1000.millis
val route =
  path("timeout") {
    withRequestTimeout(timeout1) {
      extractRequestTimeout { t1 ⇒
        withRequestTimeout(timeout2) {
          extractRequestTimeout { t2 ⇒
            complete(
              if (t1 == timeout1 && t2 == timeout2) StatusCodes.OK
              else StatusCodes.InternalServerError
            )
          }
        }
      }
    }
  }