как установить значение тайм-аута по умолчанию для savon - PullRequest
9 голосов
/ 17 июня 2011

Я использую savon, чтобы сделать некоторые вызовы API, но это занимает много времени, чтобы ответить из-за того, что я получаю ошибки тайм-аута. Так что есть ли способ изменить значение тайм-аута по умолчанию.Я использую savon 0.7.9 ruby ​​1.8.7 и rails -v 2.3.2.

Ответы [ 2 ]

23 голосов
/ 20 июня 2011

Savon использует гем HTTPI в качестве интерфейса к транспортному уровню. Поэтому вам нужно изменить время ожидания для вызовов http.

вот пример (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

РЕДАКТИРОВАТЬ: синтаксис изменился для 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
1 голос
/ 15 мая 2014

В Savon 3 операция выглядит следующим образом:

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

В Savon 3 вы не можете передать их в качестве опций конструктору, но вы можете предоставитьпользовательский http-адаптер (для замены Savon :: HTTPClient по умолчанию) следующим образом:

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