我遇到了在 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-bit Linux / Sun Java 1.6