Задержка работы на Rails 2: есть ли лучший способ запустить рабочих? - PullRequest
0 голосов
/ 16 декабря 2010

Я наконец-то получил плагин DelayedJobs, работающий на Rails 2, и он действительно работает нормально ... до тех пор, пока я запускаю:

rake jobs:work

Точно так же, как в readme, честно говоря.*

НО, это не соответствует моим требованиям ... какая фоновая задача требует, чтобы у вас была открыта оболочка и запущена команда?Это все равно что сказать скрипт / сервер для запуска моего приложения rails, и никогда не получать эту опцию -d, поэтому она будет работать даже после того, как я закрою свою оболочку.

Есть ли ЛЮБОЙ способ сохранитьрабочие обрабатываются в фоновом режиме или в режиме демона, или как там?

У меня был луч надежды, когда я увидел

Вы также можете запустить, написав простой @script/ job_runner @ и внешний вызов:

Строка в файле readme ... но ... это просто делает то же самое, что и задача rake, вы просто называете это по-другому.

Что я хочу:

Я хочу запустить мое приложение rails, затем запустить все, что будет обрабатывать рабочих, и ОБА из них работать невидимо в фоновом режиме, безнеобходимость присматривать за ним и поддерживать запущенную оболочку.

(Мой сервер - это то, к чему я подключаюсь по SSH, поэтому я не хочу, чтобы эта оболочка, в которую входил SSH, работала 24/7 (тем более что я люблю время от времени выключать свой локальный компьютер)).

Есть ли способ это сделать?

Ответы [ 4 ]

2 голосов
/ 16 декабря 2010

Вы можете запустить любую * nix-команду в фоновом режиме, добавив & к ее концу:

rake jobs:work &

Просто убедитесь, что вы exit оболочка (или используйте команду disown).) отсоединить процесс от сеанса входа в систему ... В противном случае, если сеанс отключится, ваши собственные процессы будут уничтожены им.

0 голосов
/ 16 декабря 2010

Мой скрипт Capistrano вызывает

RAILS_ENV=production script/delayed_job start
0 голосов
/ 16 декабря 2010

Используйте collectidea fork of delayed_job ... Он более активно разрабатывается и поддерживает запуск заданий в демоне без лишних хлопот.

0 голосов
/ 16 декабря 2010

Возможно, Beanstalkd и Stalker?

Beanstalk - это быстрый и простой способ поставить в очередь фоновые задачи.Stalker предоставляет удобный интерфейс-обертку для создания этих заданий.

См. railscast для получения дополнительной информации

Редактировать:

Вы можететакже запустите эту задачу rake как cronjob , что будет означать, что сервер будет запускать его периодически, без необходимости входа в систему

...