2009-06-11 110 views
1

我遇到了在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

回答

2

這個問題已經專門針對並在JRuby的最後幾個版本處理。特別是,JRuby已經修復,允許timeout.rb與阻塞IO協同工作。你想要在1.3上。 JRuby 1.1.6已經很老了,並且已經解決了一些問題。

+0

謝謝您的回答。這解決了這個問題,雖然我一直不願意升級,因爲大量的(看似無害的)openssl相關的警告和Hpricot的一個令人討厭的字符編碼問題:http://jira.codehaus.org/browse/JRUBY-3732 – Pankrat 2009-07-04 15:49:37

0

此錯誤仍然存​​在JRuby中1.5.5版本至少有一個套接字連接打交道時..