Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Net::HTTP超时时的第二个请求_Ruby_Http_Net Http - Fatal编程技术网

Ruby Net::HTTP超时时的第二个请求

Ruby Net::HTTP超时时的第二个请求,ruby,http,net-http,Ruby,Http,Net Http,我注意到,当http请求超时时,Ruby(2.6.1)会发出第二个请求。这会导致我们的一个端点出现问题,因为会触发第二个工作进程,这会占用资源 您可以在这里看到一个示例:转到并运行以下代码 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::VERI

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

您可以在这里看到一个示例:转到并运行以下代码

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
的请求,所以我想知道:

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

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

    关于这个问题的更多信息,请访问

    需要“net/http”
    http=Net::http.new(“timeout.free.beeceptor.com”,443)
    http.read_timeout=1
    http.max\u重试次数=0#
    
    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"))