Podczas korzystania z Eventmachine do asynchronicznego wykonywania żądania HTTP, za pomocą em-http-request lub w inny sposób, czy jest możliwe uzyskanie informacji o błędzie w wezwaniu zwrotnym błędu? Jak błąd połączenia vs. timeout a nieważna odpowiedź?Uzyskaj informacje o błędzie podczas korzystania z Eventmachine Http Request
5
A
Odpowiedz
6
Minęło trochę czasu, odkąd ten ktoś został zapytany, ale teraz próbowałem zrobić to samo. W obiekcie HttpClient występuje błąd pobierający. Oto moje ogólne podejście, wykorzystując pulę włókien:
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)
Jedno nie zorientowali się, jak to zrobić jest wykryć błędy limitu czasu, jeśli chcesz, aby odróżnić te z niczym innym. Najprostszym podejściem byłoby zrobienie żądania i ustalenie, czy jest ono dłuższe niż określony limit czasu, ale nie znalazłem niczego w żądaniu em-http, które odróżnia typy błędów.
To w rzeczywistości 'http.error'; Niestety, często jest puste. –