2014-01-20 44 views
1

Net:http可以阻止我的應用多久?需要多長時間阻止網絡:http

url = "http://feeds.streams.xenim.de/live/binaergewitter/json/" 
respons = Net::HTTP.get_response(URI.parse(url)) 

我發現我可以設置:

http.open_timeout(秒數等待連接打開。)默認:無

http.read_timeout(秒數等待一個塊(通過一次讀取(2)呼叫)。)默認值:60秒

這是否真的意味着它永遠等待並嘗試讀取60秒?

如果我想,我得到了一個超時5秒後,我應該更好地使用類似:

open('http://stackoverflow.com', 'r', :read_timeout=>5).read 

回答

0

60一個read_timeout意味着你將等待最大。在服務器超時之前60秒鐘響應。

要指定爲5秒的超時,執行:

conn = Net::HTTP.new('feeds.streams.xenim.de') 
conn.read_timeout = 5 
conn.get '/live/binaergewitter/json/' 

open_timeout指定等待的連接打開的秒數(即TCP握手)。

+0

什麼是'open_timeout'? –

+0

@ Sirl33tname新增說明。另請參閱http://stackoverflow.com/questions/17453099/ruby-savon-difference-between-read-timeout-and-open-timeout – Agis

+0

因此,如果我將'open_timeout'和'read_timeout'設置爲2秒,我得到了最壞情況4秒後超時? –