Ruby Net :: HTTP秒请求超时

时间:2019-07-03 06:38:42

标签: ruby http net-http

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

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

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"))

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

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

1 个答案:

答案 0 :(得分:2)

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

有关Ruby redmine

的更多信息
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"))