¿Cómo haría una declaración de tiempo con NET/HTTP si sigue el tiempo fuera?

StackOverflow https://stackoverflow.com/questions/8320315

  •  25-10-2019
  •  | 
  •  

Pregunta

Tengo el siguiente código:

require 'rubygems'
require 'net/http'
require 'uri'
url = URI.parse('http://servername.tld/up.txt')
response = Net::HTTP.get_response(url)

@yes = response.body
until @yes == "yes"
  puts "It's down"
end

Los contenidos de /up.txt es

Sin embargo, sigue sin tiempo cuando (es decir, el alojamiento del servidor up.txt) está abajo, con esto:

/home/jrg/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/http.rb:644:in 'Initialize': Connection rechazado-Connect (2) (errno :: EconnRefused)

Relacionado, pero no ayudó:¿Por qué obtengo "Errno :: EconnRefused" con 'NET/HTTP' en Rails?

¿Necesito considerar usar algo más que Net::HTTP?

¿Fue útil?

Solución

Simplemente ponga la parte que está lanzando la excepción en un bloque de rescate.

def up?(url)
  begin
    Net::HTTP.get_response(url).body == "yes"
  rescue Errno::ECONNREFUSED
    false
  end
end

until up?(url)
  puts "It's down"
end

Otros consejos

Puede que te guste Open-Uri, es mucho más ordenado:

require 'open-uri'
sleep 10 until response = open(url).read rescue nil
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top