2010-01-09 13 views

Respuesta

6

Ha pasado un tiempo desde que se le preguntó a este, pero me encontré tratando de hacer lo mismo hoy. Hay un getter de errores en el objeto HttpClient. Aquí está mi enfoque general, el uso de una piscina de fibra:

fiber = Fiber.current 
@request = EventMachine::HttpRequest.new(url) 
@http = @request.get(opts) 
@http.errback do 
    fiber.resume Exception.new("An error occurred in the HTTP request: #{@http.errors}", self) 
end 
@http.callback do 
    fiber.resume true 
end 
result = fiber.yield 
raise result if result.kind_of?(Exception) 

Una cosa que no he encontrado la manera de hacer es detectar los errores de tiempo de espera, si se quiere diferenciar los de cualquier otra cosa. El enfoque más simple sería cronometrar la solicitud y determinar si es más larga que el tiempo de espera especificado, pero no he encontrado nada en em-http-request que distinga los tipos de error.

+1

En realidad es 'http.error'; desafortunadamente, a menudo está en blanco. –

Cuestiones relacionadas