Rails Асинхронный POST-запрос

#ruby-on-rails-3 #post #asynchronous

#ruby-on-rails-3 #Публикация #асинхронный

Вопрос:

Мне интересно, есть ли способ выполнить post-запрос в rails, который не ожидает ответа, что означает асинхронный.

Я хочу выполнить такой вызов в контроллере. Возможно ли это?

Спасибо!

Ответ №1:

Способ, которым вы обычно выполняете это в Rails, заключается в использовании фонового рабочего, такого как Resque или DelayedJob, для выполнения тяжелой работы. Вы бы отправили сообщение на конечную точку и поставили в очередь какое-нибудь длительное задание в результате этого post. Запрос завершится быстро, а затем ваш фоновый рабочий будет асинхронно выполнять медленную / тяжелую работу.

Rails, в общем, не предназначен для асинхронной работы, такой как EventMachine или Node.js . У вас есть варианты для получения такого поведения, но это не так просто, как просто установить параметр.

Ответ №2:

вы могли бы использовать Typhoeus и обработчик on complete

 request = Typhoeus::Request.new("http://localhost:3000/posts/1.json")
request.on_complete do |response|
   # your stuff
end