如何捕获错误通过对等方重置连接(Errno :: ECONNRESET)

问题描述 投票:15回答:2

以下代码有时会生成“按对等方重置连接”错误。谁能告诉我如何处理这个异常?

doc = Nokogiri::HTML(open(url))
Connection reset by peer (Errno::ECONNRESET)
ruby
2个回答
35
投票

为了捕获它,就像任何其他异常一样:

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
投票

一个更有用的模式是使用retries gem

with_retries(:max_tries => 5, :rescue => [Errno::ECONNRESET], :max_sleep_seconds => 10) do
  doc = Nokogiri::HTML(open(url))
end
© www.soinside.com 2019 - 2024. All rights reserved.