2011-06-17 156 views
9

我正在使用savon來做一些api調用,但它需要很長時間來響應,因爲我得到超時errors.so有任何方法來更改超時的默認值。我使用savon 0.7.9 ruby​​ 1.8.7和rails -v 2.3.2。如何設置savon默認超時值

回答

22

Savon使用gem HTTPI作爲傳輸層的接口。因此您需要更改http調用的超時時間。

這裏一個例子(薩翁的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 

編輯:語法已更改薩翁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

如果你把'http.read_timeout = 300'是行不通的塊中。 – pisaruk

+5

那些是順便說一句。 –

1

薩翁3,操作如下:

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

在Savon 3中,您不能將這些作爲選項傳遞給構造函數,但是你可以提供自定義HTTP適配器(替換默認薩翁::了HTTPClient)如下:

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

Savon真的很喜歡改變他們如何做事...感謝您的更新。 –