Как поймать ошибку Connection reset by peer (Errno:: ECONNRESET)
Следующий код иногда генерирует ошибку "connection reset by peer". Может ли кто-нибудь показать мне, как справиться с этим исключением?
doc = Nokogiri::HTML(open(url))
Connection reset by peer (Errno::ECONNRESET)
Ответ 1
Чтобы поймать его, сделайте это как любое другое исключение:
begin
doc = Nokogiri::HTML(open(url))
rescue Errno::ECONNRESET => e
puts "we are handling it!"
end
Более полезная модель - попробовать пару раз, а затем отказаться:
count = 0
begin
doc = Nokogiri::HTML(open(url))
rescue Errno::ECONNRESET => e
count += 1
retry unless count > 10
puts "tried 10 times and couldn't get #{url}: #{e}
end
Ответ 2
Еще более полезной моделью является использование повторов gem:
with_retries(:max_tries => 5, :rescue => [Errno::ECONNRESET], :max_sleep_seconds => 10) do
doc = Nokogiri::HTML(open(url))
end