Ответ 1
Самый простой способ - создать новый поток. Это предполагает, что это легкий вызов, и вам не требуется расширенная регистрация ошибок или повторная логика.
Thread.new do
puts "call the api"
end
возможно ли в rails 2.3.X запустить новую цепочку команд после того, как запрос был отображен и возвращен запрашивающему лицу?
Мне нужна эта функция для работы с асинхронным API с другой стороны: они ожидают ответа на свой запрос, и после того, как этот ответ будет выполнен, мое приложение rails должно отправить им новый http-запрос (отправить что-то в их API)...
Каковы возможности здесь? Есть что-то вроде крючка after_render? Должен ли я использовать потоки или фоновые задачи и как это можно сделать?
Я был бы очень рад некоторым решениям: -)
С уважением
ОБНОВЛЕНИЕ: Код возврата (например, 200) должен быть отправлен запрашивающему устройству перед выполнением других вызовов
Самый простой способ - создать новый поток. Это предполагает, что это легкий вызов, и вам не требуется расширенная регистрация ошибок или повторная логика.
Thread.new do
puts "call the api"
end
Двумя наиболее популярными решениями для этого являются Delayed Job (упомянутый Lars) и Resque:
Как использовать Отложенное задание?
Я мог ошибаться, но я думаю, что выполнение кода продолжается после рендеринга, если вы не вернете его. Вот почему вы получаете сообщение об ошибке, если попытаетесь сделать дважды.
Вы рендерите html? Если да, возможно, вы можете вставить некоторый javascript на страницу рендеринга, чтобы сделать новый запрос к контроллеру и инициировать дальнейшие действия, которые вам нужно предпринять.