【发布时间】:2012-02-09 03:15:08
【问题描述】:
以下代码有时会生成“对等连接重置”错误。谁能告诉我如何处理这个异常?
doc = Nokogiri::HTML(open(url))
Connection reset by peer (Errno::ECONNRESET)
【问题讨论】:
标签: ruby
以下代码有时会生成“对等连接重置”错误。谁能告诉我如何处理这个异常?
doc = Nokogiri::HTML(open(url))
Connection reset by peer (Errno::ECONNRESET)
【问题讨论】:
标签: ruby
要捕获它,就像任何其他异常一样:
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
【讨论】:
retry 模式的信息:blog.mirthlab.com/2012/05/25/…
一个更有用的模式是使用retries gem:
with_retries(:max_tries => 5, :rescue => [Errno::ECONNRESET], :max_sleep_seconds => 10) do
doc = Nokogiri::HTML(open(url))
end
【讨论】: