Получите информацию об ошибке при использовании Запроса HTTP Eventmachine

Чтобы использование Eventmachine асинхронно выполнило Запрос HTTP, или при помощи их-запроса-HTTP или при помощи некоторых других средств, действительно ли возможно получить информацию об ошибке в errback обратном вызове? Как ошибка соединения по сравнению с тайм-аутом по сравнению с недопустимым ответом?

5
задан Srid says Reinstate Monica 2 October 2013 в 04:30
поделиться

1 ответ

Давно не спрашивали об этом, но сегодня я обнаружил, что пытаюсь сделать то же самое. В объекте HttpClient есть средство получения ошибок. Вот мой общий подход с использованием пула волокон:

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)

Одна вещь, которую я не понял, - это обнаруживать ошибки тайм-аута, если вы хотите отличить их от чего-либо еще. Самый простой подход - рассчитать время запроса и определить, больше ли он, чем указанный тайм-аут, но я не нашел ничего в em-http-request, который различает типы ошибок.

6
ответ дан 14 December 2019 в 13:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: