如何在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
)
}
}
}
}
}
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
)
}
}
}
}
}