2014-06-13 44 views
0

我有這樣的代碼片段:紅寶石HTTPS GET呼叫被卡住

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. 是第三方服務了嗎?但即使如此,不應該在ruby中的連接超時? (就像我得到一個超時例外)?

回答

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