Как сказать ошибку из-за тайм-аута подключения от ошибки из-за тайм-аута чтения в Сети Ruby:: HTTP

Мой вопрос связан с тем, Как спасти проблемы тайм-аута (Ruby, направляющие).

Вот распространенный способ спасти от тайм-аута:

def action
  # Post using Net::HTTP
rescue Timeout::Error => e
  # Do something
end

Я хотел бы определить, было ли исключение повышено при попытке соединиться с хостом, или если это было повышено при попытке читать из хоста. Действительно ли это возможно?

8
задан Community 23 May 2017 в 11:55
поделиться

1 ответ

Вот решение (после исправления Бена):

require "net/http"
http = Net::HTTP.new("example.com")
http.open_timeout = 2
http.read_timeout = 3
begin
  http.start
  begin
    http.request_get("/whatever?") do |res|
      res.read_body
    end
  rescue Timeout::Error
    puts "Timeout due to reading"
  end
rescue Timeout::Error
  puts "Timeout due to connecting"
end
12
ответ дан 5 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: