Лучший способ интегрировать приложение Rails с медленным веб-сервисом - PullRequest
1 голос
/ 17 января 2009

Мне нужно реализовать веб-клиент в приложении Rails. Существующим веб-сервисом является SOAP, и для ответа на запросы часто может потребоваться несколько секунд. Используя SOAP4R, блок запросов.

Допустимо ли вызывать эти методы блокировки напрямую из контроллера rails? В противном случае контроллер rails должен буферизовать команды отдельной службой, которая будет обрабатывать команды и ответы SOAP. Есть ли третий, лучший способ?

1 Ответ

3 голосов
/ 17 января 2009

Зависит от того, нужно ли их обрабатывать в реальном времени (например, когда пользователь нажимает GO, он должен фактически срабатывать?). Если вы используете монгрел, помните, что любой монгрел, который делает «что-то», будет блокировать, и это грубо с точки зрения параллелизма (если у вас нет тонны монгрел вокруг). Если вы используете пассажира, попадание из-за длительного действия контроллера не представляет большой проблемы, если у вас также есть открытые экземпляры пассажира.

Для вещей, которые могут происходить вне диапазона (и иметь некоторую задержку, например, обработку отчетов или преобразование видео), у меня есть модель под названием «JOBS», а затем я использую script / runner (в сочетании с cron) для вызова Jobs .process_jobs каждые несколько минут.

Или вы можете создать небольшой скрипт и поместить его в скрипт / ваш скрипт и вызывать его каждые несколько минут.

Есть третий вариант, использовать процесс drb, но - по моему опыту - я обнаружил, что это немного больше "движущихся частей", чем просто запускать хрон каждые несколько минут (или даже просто позволять контроллеру огонь действия), и поэтому я склонен избегать его, если мне действительно не нужно (например, хорька).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...