JRuby(Linux)で確実に動作しないタイムアウトに問題があります。具体的には、リモートサーバーにHEAD要求を送信し、このサーバーがビジー(応答しない)の場合、構成されたタイムアウトは発生せず、アプリケーションは長時間停止します。私はread_timeout
を設定し、timeout()
機能を使用して、両方を試してみましたが、どれも確実に働いた:HTTP要求に対する信頼できるJRubyタイムアウト
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で使用することはできません。
誰かがJRubyでHTTP要求の信頼できるタイムアウトを取得する方法を知っていますか?
PS:これは、この問題は、特異的に標的とJRubyのの最後のいくつかのバージョンに比べて処理されたのJRuby 1.1.6/32ビットLinux /日のJava 1.6
感謝。これは問題の解決にはなりましたが、(一見無害な)openssl関連の警告や、Hpricotの文字エンコーディングの問題のためにアップグレードすることには消極的でした:http://jira.codehaus.org/browse/JRUBY-3732 – Pankrat