gpt4 book ai didi

java - 为什么 `setConnectionRequestTimeout` 没有停止我的 1 分钟获取请求?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:43:28 24 4
gpt4 key购买 nike

我有这个代码:

    RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(40 * 1000)
.setConnectionRequestTimeout(40 * 1000)
.setSocketTimeout(40 * 1000)
.build();
client = HttpClientBuilder
.create()
.setDefaultRequestConfig(requestConfig)
.build();
}

    try {

Stopwatch stopWatch = Stopwatch.createStarted();
response = client.execute(new HttpGet(routingRequestUrl));
stopWatch.stop();

} catch (Exception e) {
answer.errorMsg = e.getMessage();
answer.latency = null;
}

当我的客户端配置不包含 .setSocketTimeout(40 *
1000)
- 秒表显示请求可能需要超过 1 分钟。

当我单独或一起尝试 setConnectTimeoutsetConnectionRequestTimeout 时会发生这种情况。

为什么只有 .setSocketTimeout(40 * 1000) 有效检查超时 40 秒?而另一个不是?

这些是打印品:

读取超时

等待来自池的连接超时

第一个是由 setConnectionRequestTimeout 触发的,第二个是由 setSocketTimeout 触发的吗?

最佳答案

https://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/config/RequestConfig.html

getConnectionRequestTimeout()

返回从连接管理器请求连接时使用的超时时间(以毫秒为单位)。

getConnectTimeout()

确定建立连接前的超时时间(以毫秒为单位)。

getSocketTimeout()

以毫秒为单位定义套接字超时 (SO_TIMEOUT),这是等待数据的超时,或者换句话说,两个连续数据包之间的最大不活动时间。

__

所以,第一个,connectionRequestTimeout 发生在你有一个连接池并且它们都忙,不允许连接管理器给你一个连接来发出请求时。

connectTimeout 发生在建立连接时。例如在进行 tcp 握手时。

socketTimeout 如描述所说,是等待数据时的超时时间。通常在您的服务器速度慢时发生。

关于java - 为什么 `setConnectionRequestTimeout` 没有停止我的 1 分钟获取请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31611861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com