2011-11-11 10 views
9

Ho cercato i documenti e altri posti online e non riesco a trovare il modo corretto di impostare l'opzione di timeout per Faraday. Qualcuno ha la risposta?Timeout di Faraday

ho provato:

conn = FaradayStack.build(url) 
    conn.headers[:user_agent] = AppConfig.user_agent 
    # conn.options[:timeout]  = 20 
    # conn.options[:open_timeout] = 20 
    response = conn.get do |req| 
    req.options = { 
     :timeout  => 20, 
     :open_timeout => 20 
    } 
    end 
    response.body 

Nulla sembra funzionare. A proposito, sto usando l'adattatore Typhoeus se questo fa la differenza.

risposta

14

Beh, sembra che l'ho capito. Se mi passate l'opzione di timeout nel inizializzatore, sembra funzionare:

options = { 
    :timeout  => 20, 
    :open_timeout => 20 
    } 
    conn = FaradayStack.build(url, options) 
    conn.headers[:user_agent] = AppConfig.user_agent 
    conn.get.body 
+0

Una risposta un po 'più aggiornata, https://github.com/lostisland/faraday/issues/417 – Andrew

10

Il Faraday README contiene attualmente questo esempio utilizzando uno stile di blocco:

conn.get do |req| 
    req.url '/search' 
    req.options[:timeout] = 5   # open/read timeout in seconds 
    req.options[:open_timeout] = 2  # connection open timeout in seconds 
end 

Se questo non funziona per voi, forse dovresti presentare un biglietto su Github.

+0

La domanda iniziale sembra essere la domanda sul timeout generale, piuttosto che sui timeout per richiesta che il precedente si riferisce a . –