Выполнение неблокирующего HTTP-запроса в приложении Rails - PullRequest
5 голосов
/ 11 октября 2011

Кто-нибудь знает способ сделать исходящие неблокирующие HTTP-запросы из Rails? В конечном итоге мне понадобится тело ответа, и я стараюсь избегать создания новых фреймворков, чтобы все было просто.

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 марта 2012

Чтобы смоделировать неблокирующую часть, установите низкий read_timeout. Также будьте готовы перехватить полученную ошибку тайм-аута:

request = Net::HTTP::Get.new(url)
http = Net::HTTP.new(url.host, url.port)

http.read_timeout = 1

begin
  http.request(request)
rescue Timeout::Error => e
end

Я не знаю базового механизма рельсов, который будет выполнять неблокирующий вызов и получать ответ. Rails очень сильно привязан к циклу запроса / ответа, поэтому обычно основной путь выполнения контроллера заканчивается до возврата HTTP-вызова.

0 голосов
/ 11 октября 2011

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

...