Ruby https让电话卡住了

时间:2014-06-13 01:01:17

标签: ruby https connection

我有这段代码:

def httpsGet url
    uri = URI.parse(url)
    http = Net::HTTP.new(uri.host, uri.port)
    request = Net::HTTP::Get.new(uri.request_uri)
    http.use_ssl = true
    request.initialize_http_header({"someHeader" => "82739840273985734"})
    http.request(request)
end

我一直在运行一个脚本,过去一周使用它就好了。脚本基本上一次又一次多次调用不同参数的第三方服务。突然,昨天和今天,这种方法似乎有时会悬挂(我在几个地方卡住了puts)。这很烦人,因为这种方法有时会在100次通话后挂起,有时会有20次通话,有时候会在很长时间后等待...等等。

  1. 该代码不是在Ruby中使用标头进行https调用的最佳方法吗?
  2. 我该怎么调试这个以确保我没有做错什么?
  3. 是第三方服务?但即使如此,不应该在红宝石时间内连接吗? (比如我得到超时异常)?

1 个答案:

答案 0 :(得分:1)

查看open_timeoutssl_timeout超时defined for this library

http = Net::HTTP.new(uri.host, uri.port)
http.open_timeout = 5 #  create connection timeout after 5 seconds
http.ssl_timeout = 5  # read timeout after 5 seconds