J'ai des problèmes avec les délais d'attente qui ne fonctionnent pas de manière fiable avec JRuby (Linux). Plus précisément, si j'envoie une requête HEAD à un serveur distant et que ce serveur est occupé (ne répond pas), le délai d'attente configuré ne se déclenche pas et mon application reste bloquée pendant une longue période. J'ai essayé à la fois, la mise en read_timeout
et en utilisant la fonction timeout()
mais aucun travaillé de manière fiable:Délai d'attente JRuby fiable pour les requêtes HTTP
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
Pour Ruby ce problème est le document largement à la page SystemTimer. Cependant, la gemme SystemTimer proposée ne peut pas être utilisée avec JRuby.
Quelqu'un a-t-il une idée sur la façon d'obtenir des délais d'attente fiables pour les demandes HTTP dans JRuby?
PS: Ceci est JRuby 1.1.6/Linux 32 bits/Sun Java 1.6
Merci pour votre réponse. Cela résout le problème bien que j'aie été réticent à mettre à niveau à cause de beaucoup d'avertissements liés à openssl (apparemment inoffensifs) et d'un problème d'encodage de caractères méchant avec Hpricot: http://jira.codehaus.org/browse/JRUBY-3732 – Pankrat