gpt4 book ai didi

java - Apache Http 客户端超时问题

转载 作者:行者123 更新时间:2023-12-02 12:12:23 24 4
gpt4 key购买 nike

我有这部分代码:

         RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(30 * 1000)
.setSocketTimeout(30 * 1000)
.setConnectionRequestTimeout(30 * 1000)
.build();

BotSynch.httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();

httpClient.execute(post);

BotSynch.HttpClient 是一个类字段

private static CloseableHttpClient httpClient;

最后一行的帖子是 HttpPost。

到目前为止,我的实现运行良好,但如果我连接的服务器在 30 秒内没有响应发布请求,则什么也不会发生。

有时,我可能需要长达 10 分钟才能收到服务器对请求的答复,这实际上是我试图通过上面的超时设置来防止的。

这里有什么我错过的东西或者除了这个设置之外还应该处理的东西吗?

最佳答案

如果预期行为是 HttpClient#execute 调用的时间不应超过 30 秒,无论执行结果如何,您都应该考虑使用 HttpUriRequest#abort后台线程方法中的方法,可以在指定的时间间隔后中止请求。

    final HttpGet request = new HttpGet();
ScheduledExecutorService executorService = ...
executorService.schedule(request::abort, (long)30, TimeUnit.SECONDS);
HttpResponse response = httpClient.execute(request);

我们(包括我自己)永远不应该忘记这不是 socketTimeout 的作用。

关于java - Apache Http 客户端超时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46442716/

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