2011-06-17 14 views
9

Używam Savona do wykonywania niektórych wywołań interfejsu API, ale zajmuje to dużo czasu, aby odpowiedzieć z tego powodu, że otrzymuję błędy przekroczenia limitu czasu.to jest jakikolwiek sposób na zmianę domyślnej wartości limitu czasu. Używam savon 0.7.9 ruby ​​1.8.7 i szyn -v 2.3.2.jak ustawić domyślną wartość czasu Savona

Odpowiedz

22

Savon używa interfejsu HTTPI gem jako interfejsu warstwy transportowej. Dlatego musisz zmienić limit czasu dla wywołań http.

tu przykład (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 

Edycja: składnia zmieniła się 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

Jeśli wstawisz 'http.read_timeout = 300' wewnątrz bloku, to nie zadziała. – pisaruk

+5

To są sekundy w drodze. –

1

W Savon 3, operacja jest jak następuje:

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

W urządzeniu Savon 3 nie można przekazać ich jako opcji konstruktorowi, ale możesz dostarczyć niestandardowy adapter http (w celu zastąpienia domyślnego Savon :: HTTPClient) w następujący sposób:

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

Savon bardzo lubię zmieniać sposób wykonywania czynności ... Dzięki za aktualizację. –

Powiązane problemy