2014-01-05 11 views
6

ich diesen Code bin mit zu kratzen externen HTML-DateienLegen Sie eigene Timeout in Net :: HTTP :: Get.new mit Rails

link = URI.parse(url) 
request = Net::HTTP::Get.new(link.path) 
response = Net::HTTP.start(link.host, link.port) {|http| 
    http.request(request) 
} 

großen Werke aber mit verlangsamter Web-Seiten manchmal reagiert Timeout , also muss ich eine Zeitlimit pro Verbindung einstellen. Irgendeine Idee?

+0

möglich Duplikat von [Wie eine Lese Timeout für einen Net angeben :: HTTP :: Post.new Anfrage in Ruby 2] (http://stackoverflow.com/questions/19547184/how-to-specify -a-read-timeout-für-ein-nethttppost-new-request-in-ruby-2) das gleiche für get und post –

Antwort

11

Sie müssen das Attribut read_timeout festlegen.

link = URI.parse(url) 
request = Net::HTTP::Get.new(link.path) 
begin 
    response = Net::HTTP.start(link.host, link.port) {|http| 
    http.read_timeout = 100 #Default is 60 seconds 
    http.request(request) 
    } 
rescue Net::ReadTimeout => e 
    puts e.message 
end 
+0

Works !, perfekt, aber jetzt brauche ich eine Antwort auf die Rückkehr 'false'oder' true' abhängig von die Antwort des Timeouts. Wie 'wenn Antwort = antwortet nicht, dann gebe falsch zurück 'Sie wissen? – skozz

+1

Sie müssen die Zeitüberschreitungsausnahme behandeln. Ich habe Änderungen vorgenommen, um die Ausnahme im Falle eines Timeouts zu behandeln. – Akarsh

+0

Und wenn Sie denken, die Antwort war zufriedenstellend genug, bitte denken Sie daran, die Antwort richtig zu kreuzen :). – Akarsh

Verwandte Themen