Как исправить Net :: ReadTimeout в SOAP API с помощью гема Savon Ruby? - PullRequest
0 голосов
/ 14 июля 2020

Мой сценарий работает, но по какой-то причине выдает ошибку Net::ReadTimeout. Полагаю, из-за большого количества подключений к API. Есть ли способ отложить тайм-аут с помощью Savon? Спасибо.

wsdl = 'https://org.my.domain/webservices/myservice.asmx?WSDL'

# Open Client Webservice
client = Savon.client(wsdl: wsdl, ssl_verify_mode: :none, ssl_version: :TLSv1, convert_request_keys_to: :none)

# Connect to Webservice - Authenticate
response = client.call(:authenticate, message: { username: 'user', password: 'pwd', organization: 'org', domain: 'my.domain' })

1 Ответ

2 голосов
/ 14 июля 2020

Вы захотите увеличить время ожидания чтения, если вы не можете уменьшить количество вызовов, которые вы делаете к API. На самом деле, ваши программы всегда должны уважать ресурсы, с которыми они взаимодействуют, и должны позволять другим программам получать к ним доступ без снижения производительности.

Если вы действительно хотите увеличить тайм-аут чтения, синтаксис будет зависеть от какую версию вы используете, для версии 2.x:

client = Savon.client(
    wsdl: wsdl,
    ssl_verify_mode: :none,
    ssl_version: :TLSv1,
    convert_request_keys_to: :none,
    open_timeout: 400,
    read_timeout: 400,
)

Для версии 3.x:

client.http.send_timeout = 400
client.http.receive_timeout = 400

Будьте осторожны, это секунды.

...