2015-08-28 40 views
4

有沒有辦法在這個簡單的get方法中添加超時選項?法拉第超時在一個簡單的獲取

我正在使用法拉第3.3。

Faraday.get(url) 

經過搜索後,我只能在首次啓動連接後應用超時選項,然後應用超時選項。或者有一個簡單的方法?

這是我在做什麼現在:

conn = Faraday.new 
response = conn.get do |req| 
    req.url url 
    req.options.timeout = 2 # 2 seconds 
end 

回答

5

試試這個:

conn = Faraday.new do |conn| 
    conn.request.options.timeout = 20 
end 
response = conn.get(url) 

UPD: 後我審查了寶石的來源,我發現,有沒有辦法做到這一點像你要的那樣。

get方法只能設置url, request params and headers。但是要指定超時,您必須訪問Faraday::Connection實例的@options。你可以通過做這個attr_reader :options

conn = Faraday::Connection.new 
conn.options.timeout = 20 

或者法拉第::連接實例initialization

Faraday::Connection.new(nil, request: { timeout: 20 }) 

或當它copies connection parameters請求參數和yields request back

Faraday::Connection.new.get(url) { |request| request.options.timeout = 20 } 
+0

感謝,這與我所擁有的相似。我想如果有一種方法就是立即在Faraday.get中傳遞選項。 –

+0

@趙漢翁我更新了我的回答 –

+0

非常感謝你的澄清。 –

相關問題