我遇到了在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
紅寶石這個問題在SystemTimer頁面被廣泛記載。但是,所提議的SystemTimer gem不能用於JRuby。
有沒有人有一個想法如何獲得可靠的JRuby HTTP請求超時?
PS:這是JRuby的1.1.6/32位Linux /的Sun Java 1.6
謝謝您的回答。這解決了這個問題,雖然我一直不願意升級,因爲大量的(看似無害的)openssl相關的警告和Hpricot的一個令人討厭的字符編碼問題:http://jira.codehaus.org/browse/JRUBY-3732 – Pankrat 2009-07-04 15:49:37