【问题标题】:How to catch error Connection reset by peer (Errno::ECONNRESET)如何捕获错误连接由对等方重置(Errno::ECONNRESET)
【发布时间】:2012-02-09 03:15:08
【问题描述】:

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

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

【问题讨论】:

    标签: ruby


    【解决方案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】:

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

    with_retries(:max_tries => 5, :rescue => [Errno::ECONNRESET], :max_sleep_seconds => 10) do
      doc = Nokogiri::HTML(open(url))
    end
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    相关资源
    最近更新 更多