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 gem は JRuby では使用できません。
JRuby で HTTP リクエストの信頼できるタイムアウトを取得する方法を知っている人はいますか?
PS: これは JRuby 1.1.6 / 32 ビット Linux / Sun Java 1.6 です。