【问题标题】:Change socket timeout for grails 3 RestBuilder client post request更改 grails 3 RestBuilder 客户端发布请求的套接字超时
【发布时间】:2021-02-15 05:50:16
【问题描述】:

我有一个使用 grails.plugins.rest.client 插件调用另一个 API 的 grails 3 应用程序。该 api 执行一些操作并在 40 到 50 秒内响应。 grails 应用程序超时并在 30 秒内返回服务器错误。如何将超时更改为等待 60 秒的响应。我的代码如下:

import grails.plugins.rest.client.RestBuilder
import grails.plugins.rest.client.RestResponse

private RestBuilder rest = new RestBuilder()

RestResponse resp = rest.post(url) {
            header 'Accept', "application/json"
            json(data)
        }
// more code

【问题讨论】:

    标签: grails


    【解决方案1】:

    如果你想增加套接字超时,grails rest 客户端支持两个选项。

    • 连接超时
    • 读取超时

    这些选项将在 RestBuilder 实例化时设置。您不能根据请求更改此设置 很可惜的类型。

    要设置它们,您可以使用以下格式。但请记住,它需要更改代码并重建 war 文件。

        private RestBuilder rest = new RestBuilder(readTimeout: 180000, proxy: Proxy.NO_PROXY)
    

    180000 = 180 秒 = 3 分钟读取超时

    您也可以在此处设置 connectionTimeout,但您很可能会受到 Tomcat 等 servlet 容器或 cloudfront 或 cloudflare 等 CDN 上的 connectiontimeOut 属性的限制。

    如果您也在使用 tomcat,您可能需要增加异步超时,如下面的指令示例所示。希望这可以帮助其他希望解决相同问题的人。

        <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   asyncTimeout="60000"
                   redirectPort="8443" />
    

    【讨论】:

      猜你喜欢
      • 2011-07-31
      • 2017-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 1970-01-01
      • 2013-03-07
      相关资源
      最近更新 更多