【问题标题】:Set Finatra HTTP request timeout设置 Finatra HTTP 请求超时
【发布时间】:2020-01-24 15:08:34
【问题描述】:

是否可以在 Finatra 服务器中设置 HTTP 请求响应超时?

http 控制器回调通常返回一个 Future,一旦解决,响应就会被传输。我想在 Finatra 中定义服务器在返回 500 或 400 响应之前应该等待多长时间。

【问题讨论】:

    标签: scala finatra


    【解决方案1】:

    您可以扩展 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)
      }
    

    【讨论】:

    • 正是我想要的!谢谢@lssilva
    【解决方案2】:

    我想,你在找Future.within

    【讨论】:

    • 为了让 Future.within 抛出 TimeoutException,你必须等待它。由于 Finatra 回调是从事件循环线程中调用的,所以 Await 绝不是一个好主意。
    • 不,你不必Await。它将在您指定的时间后完成异常,并且服务器将返回 500 或您将该异常映射到的任何内容。
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多