Net :: OpenTimeout:执行在后台第三方API调用上过期

时间:2016-09-13 03:22:12

标签: ruby ruby-on-rails-4 sidekiq

我有Sidekiq 5工作人员,并发50.我的webapp每隔几分钟就进行第三方API调用,平均每小时15000个请求。每小时我都有近10个错误Net::OpenTimeout: execution expired。看起来不是一个大问题,但我想知道如何处理它。感谢。

def grabber(url)
    response, body = nil
    uri = URI(url)
    Net::HTTP.start(uri.host, uri.port,
                    :use_ssl => uri.scheme == 'https', :read_timeout => 1000) do |http|
      request = Net::HTTP::Get.new uri

      response = http.request request
    end
    if response.code == '200'
      body = JSON.parse(response.body)
    end
    body
  end

1 个答案:

答案 0 :(得分:1)

当发出请求超时时,Net :: HTTP会抛出异常。

您可以捕获异常并使用它执行某些操作:

rescue Net::OpenTimeout
  #do something

Here你可以得到一些例子。