【发布时间】:2020-01-24 15:08:34
【问题描述】:
是否可以在 Finatra 服务器中设置 HTTP 请求响应超时?
http 控制器回调通常返回一个 Future,一旦解决,响应就会被传输。我想在 Finatra 中定义服务器在返回 500 或 400 响应之前应该等待多长时间。
【问题讨论】:
是否可以在 Finatra 服务器中设置 HTTP 请求响应超时?
http 控制器回调通常返回一个 Future,一旦解决,响应就会被传输。我想在 Finatra 中定义服务器在返回 500 或 400 响应之前应该等待多长时间。
【问题讨论】:
您可以扩展 HttpServer 并定义自己的超时时间
trait CustomServer extends HttpServer with Tls {
然后覆盖 configureHttpServer 方法并定义超时、请求站点和其他属性
override def configureHttpServer(server: Http.Server): Http.Server = {
server.withAdmissionControl.concurrencyLimit(maxConcurrentRequests = 2000, maxWaiters = 0)
.withResponseClassifier(HttpResponseClassifier.ServerErrorsAsFailures)
.withMaxRequestSize(StorageUnit.fromMegabytes(200))
.withRequestTimeout(50.seconds)
}
【讨论】:
我想,你在找Future.within
【讨论】:
Await。它将在您指定的时间后完成异常,并且服务器将返回 500 或您将该异常映射到的任何内容。