Rails фоновый процесс / структура данных - PullRequest
1 голос
/ 18 ноября 2010

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

Я не могу заставить алгоритм просто запускаться после добавления каждого пользователя, потому что нам также нужно запустить алгоритм, если пользователь ждал определенное количество времени.

Возможно ли это?Мне в основном нужна структура данных, которая постоянно работает и доступна в разное время в фоновом режиме.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 18 ноября 2010

delayed_job работает хорошо и очень легко интегрируется. Вы можете даже произвольно заставить все работать в фоновом режиме. Он загружает приложение rails как рабочие и сохраняет их в памяти, в отличие от скрипта / бегуна, который постоянно загружает и выгружает приложение. DJ смотрит на БД, чтобы искать работу. Я даже настроил сайт, где другой сервер обрабатывал фоновые задачи отдельно от сервера приложений.

1 голос
/ 18 ноября 2010

Посмотрите на Уорлинг и Скворец.

0 голосов
/ 18 ноября 2010

Вы можете сделать это, используя cron и / или сценарий оболочки или командный файл, и rake или Rail's script runner.

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

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

Преимущество использования script runner в Rail состоит в том, что он имеет доступ ко всему, что известно вашему приложению Rails. Недостатком является то, что приложение запускается дольше, потому что оно должно проходить через процедуры инициализации Rails каждый раз, когда оно запускается, и именно поэтому я упомянул циклическое выполнение чего-то, а затем сна.

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