Итак, у меня есть скрипт, который собирает некоторую информацию о некоторых доменных именах, и в некоторых случаях эти доменные имена даже не регистрируются, и их IP-адреса не могут быть разрешены.Когда это происходит, я могу ожидать следующее сообщение об ошибке:
response = Net::HTTP.start(uri.host, uri.port) {|http|
http.request(request)
}
error:
[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_timeout
и read_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 в этом примере), но по какой-то причине он все еще не работает.
Что я делаю не так?