首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ruby::HTTP第二个请求超时时

Ruby::HTTP第二个请求超时时
EN

Stack Overflow用户
提问于 2019-07-03 06:38:42
回答 1查看 1.7K关注 0票数 5

我注意到当http请求超时时,Ruby (2.6.1)会发出第二个请求。这会导致我们的一个端点出现问题,因为第二个工作人员会被触发,占用资源。

您可以在这里看到一个示例:转到https://beeceptor.com/console/timeout并运行以下代码

代码语言:javascript
运行
复制
require "net/http"

http = Net::HTTP.new("timeout.free.beeceptor.com", 443)
http.read_timeout = 1
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.request(Net::HTTP::Get.new("/Time"))

您可以看到对/Time有两个请求,所以我想知道:

  1. 这种默认行为的目的是什么?当我使用curl命令执行相同的查询时,我不会得到第二个请求curl --max-time 1 https://timeout.free.beeceptor.com
  2. 我怎样才能影响这种行为?
  3. 还是我做错什么了?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-03 08:17:02

它是Net::HTTP的一个特性,它重试幂等请求。您可以通过设置max_retries来限制重试次数(在您的情况下为0)。

关于这个问题的更多关于红宝石的信息

代码语言:javascript
运行
复制
require "net/http"

http = Net::HTTP.new("timeout.free.beeceptor.com", 443)
http.read_timeout = 1
http.max_retries = 0 # <<<<<<<< the change
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.request(Net::HTTP::Get.new("/Time"))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56864275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档