У меня проблемы с таймаутами, которые не работают надежно под JRuby (Linux). Более конкретно, если я отправляю запрос HEAD на удаленный сервер, и этот сервер занят (не отвечает), настроенное время ожидания не срабатывает, и мое приложение останавливается на долгое время. Я попробовал оба варианта, установив read_timeout
и используя функцию timeout()
, но ни одна из них не работала надежно:
Timeout::timeout(5) do
Net::HTTP.start(uri.host, uri.port) do |http|
http.read_timeout = 5
http.request_head(uri.request_uri)
end
end
Для Ruby эта проблема подробно описана на странице SystemTimer . Однако предлагаемый гем SystemTimer нельзя использовать с JRuby.
Кто-нибудь знает, как получить надежные тайм-ауты для HTTP-запросов в JRuby?
PS: это JRuby 1.1.6 / 32-битная Linux / Sun Java 1.6