2011-06-17 21 views
9

Sto usando savon per effettuare alcune chiamate API ma è necessario molto tempo per rispondere a causa di ciò sto ricevendo errori di timeout.so c'è un modo per modificare il valore predefinito di timeout. Sto usando Savon 0.7.9 ruby ​​1.8.7 e rails -v 2.3.2.come impostare il valore di timeout predefinito di savon

risposta

22

Savon utilizza la gemma HTTPI come interfaccia per il livello di trasporto. Pertanto è necessario modificare il timeout per le chiamate http.

qui un esempio (Savon 1.x)

jira = Savon::Client.new do 
    wsdl.document = 'http://jira.my-domain.com/rpc/soap/jirasoapservice-v2?wsdl' 
end 

jira.http.read_timeout = 300 

EDIT: la sintassi è cambiato per Savon 2.x

jira = Savon.client(
    wsdl: 'http://jira.my-domain.com/rpc/soap/jirasoapservice-v2?wsdl', 
    open_timeout: 300, 
    read_timeout: 300, 
    ssl_verify_mode: :none) 
p jira.operations 
+3

Se mettete 'http.read_timeout = 300' all'interno del blocco non funzionerà. – pisaruk

+5

Questi sono secondi tra l'altro. –

1

In Savon 3, il funzionamento è il seguente:

client = Savon.new(wsdl_url) 
client.http.send_timeout = 300 
client.http.receive_timeout = 300 

In Savon 3, non è possibile passarli come opzioni al costruttore, ma è possibile fornire un adattatore personalizzato http (per sostituire il predefinito Savon :: HTTPClient) come segue:

client = Savon.new(wsdl_url, MyAdapter.new) 
+1

A Savon piace molto cambiare il modo in cui fanno le cose ... Grazie per l'aggiornamento. –

Problemi correlati