Используйте скрипт Linux для запуска непрерывной задачи rake (запуск, остановка и т. Д.) - PullRequest
0 голосов
/ 18 августа 2011

У меня есть задача rake, которая анализирует потоковый API и вводит данные в базу данных. API потоковой передачи - это прямая трансляция, и задача rake должна выполняться непрерывно, чтобы данные поступали в базу данных. Однажды вызванная задача rake будет работать непрерывно и анализировать данные. Теперь я запустил задачу граблей, и она работает. Проблема заключается в том, что если я закрою терминал или перезагрузлю сервер, то грабли будут остановлены. Итак, я хочу сценарий в Linux (что-то вроде того, который использовался для запуска или остановки сервера Apache), который выполняет следующее:

1. start the rake task by calling rake command (rake parse:stream) from the RAILS-ROOT (application directory of Rails app)
2. stop the rake task by killing the process.
3. start the rake task automatically when the server reboots.

Я не знаком со скриптами Linux и не знаю, с чего начать. Я использую Ubuntu Server. кто-нибудь может мне помочь?

Ответы [ 3 ]

2 голосов
/ 19 августа 2011

Вот статья, которая также может вам помочь.В нем обсуждались различные варианты управления приложениями Ruby и связанными с ними процессами:
http://michaelvanrooijen.com/articles/2011/06/08-managing-and-monitoring-your-ruby-application-with-foreman-and-upstart/

1 голос
/ 19 августа 2011

Посмотрите , как это делает проект Github Resque .

По сути, они создают задачи для запуска / перезапуска / остановки определенной задачи, в данном случае resque:work. Обратите внимание, что задача restart_workers просто вызывает другие задачи, останавливается и запускается. Это должно быть действительно легко изменить на то, что вы хотите.

1 голос
/ 18 августа 2011

Вам нужно запустить свой скрипт как демон.Когда я создаю сценарии запуска такого типа, я обычно делаю 2 файла, один из которых остается в /etc/init.d и обрабатывает команды start/stop/status/restart, а другой - фактически выполняет свою работу и вызывается первым сценарием.

Здесь является одним из решений, и, хотя скрипт демона написан на perl, вы хотите запускать только некоторые командные строки, поэтому демонизация скрипта perl может легко выполнить вашу работу.

Если вы хотитеЕсть также ruby ​​gems для демонизации скриптов, так что вы можете написать скрипт в ruby, который выполняет задачи rake.

И если вы хотите пойти в хардкор, есть решения для написания bashсценарии, которые могут демонизировать, но я не уверен, что рекомендую подобное решение;по крайней мере, я нахожу их довольно сложными в использовании.

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