open_timeout和read_timeout不起作用

时间:2018-10-18 21:49:02

标签: ruby net-http

所以我有一个脚本,该脚本将收集有关某些域名的一些信息,在某些情况下,这些域名甚至都不再注册,并且它们的IP地址无法解析。发生这种情况时,我会从中收到以下错误消息:

response = Net::HTTP.start(uri.host, uri.port) {|http|
    http.request(request)
}

错误:

[5] pry(WebRequest)* }  
SocketError: Failed to open TCP connection to ekjrhtekjhterhter.net:80 (getaddrinfo: Name or service not known)
from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:939:in `rescue in block in connect'

我尝试使用open_timeoutread_timeout选项,如下所示:

response = Net::HTTP.start(uri.host, uri.port, :open_timeout => 1, :read_timeout => 1) {|http|
    http.request(request)
}

但是它静止大约需要5-10秒,然后它最终给了我这个错误:

[9] pry(WebRequest)* }  
Net::OpenTimeout: execution expired
from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/net/http.rb:937:in `initialize'

我基本上不希望此请求的运行时间超过2秒(尽管我知道本示例中的请求为1),但是由于某种原因,它仍然无法正常工作。

我在做什么错了?

0 个答案:

没有答案