了解Spray Web Service的HTTP 504结果

时间:2016-03-21 00:40:15

标签: scala http spray

假设:

client <-- HTTP --> spray web service <-- HTTP --> other web service

client在点击spray web service时收到以下HTTP状态代码和实体正文:

504 Gateway Timeout - Empty

根据这个answer,我的理解是spray web service没有收到来自other web service的及时回复,因此向HTTP 504发送了client }。

假设合理,https://github.com/spray/spray/blob/master/spray-http/src/main/scala/spray/http/StatusCode.scala#L158,我猜测其中一个server config values504中的spray web service负责{1}}对client的HTTP响应。

什么配置或隐含会导致spray web service回复504到client

1 个答案:

答案 0 :(得分:0)

我认为你正在使用默认的Spray超时,也许你需要增加它们。如果是这种情况,则必须配置2个值以增加超时。

  1. idle-timeout:在服务器断开连接之前可以与服务器建立空闲连接的时间(默认为60秒)。
  2. request-timeout:客户端(从服务器到另一台服务器)的请求在超时(默认为20秒)之前可以处于空闲状态的时间。
  3. 第一个值必须始终高于第二个值,因为idle-timeout将使请求客户端的连接毫无意义。

    所以只需在application.conf中覆盖您的配置,如下所示:

    spray.can {
        server {
            idle-timeout = 120 s
            request-timeout = 20 s
        }
    }