Как отловить ошибку Сброс соединения по пиру (Errno :: ECONNRESET) - PullRequest
15 голосов
/ 09 февраля 2012

Следующий код иногда генерирует ошибку «сброс соединения по одноранговой сети».Может кто-нибудь показать мне, как обработать это исключение?

doc = Nokogiri::HTML(open(url))
Connection reset by peer (Errno::ECONNRESET)

Ответы [ 2 ]

35 голосов
/ 09 февраля 2012

Чтобы поймать это, сделайте это как любое другое исключение:

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
4 голосов
/ 03 января 2014

Еще более полезный шаблон - использовать камень retries :

with_retries(:max_tries => 5, :rescue => [Errno::ECONNRESET], :max_sleep_seconds => 10) do
  doc = Nokogiri::HTML(open(url))
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...