Фоновая обработка в рельсах - PullRequest
2 голосов
/ 12 апреля 2010

Это может показаться FAQ по stackoverflow, но мои требования немного отличаются. В то время как я ранее использовал BackgroundRB и DJ для запуска фоновых процессов в ruby, на этот раз мне нужно выполнить некоторые сложные аналитические и математические вычисления на огромном наборе данных, и мне нужно делать это только в первые 15 дней месяца , Исходя из этого, я испытываю желание использовать cron и запустить скрипт ruby ​​для достижения этой цели.

Что я хотел бы знать / понять: 1 - Использование cron - хорошая идея (потому что я не системный администратор, и поэтому, хотя у меня есть базовое представление о cron, я не слишком уверен в том, чтобы сделать это идеально) 2 - Можем ли мы как-то изменить DJ, чтобы он работал только в первые 15 дней месяца (с / без использования cron), а затем просто останавливался и выходил, когда все задания в очереди за день закончились (не хочу этого пинговать БД каждый раз для новой работы ... какими бы ни были задания в очереди при запуске DJ, это будет все).

Я не уверен, правильно ли я сформулировал вопрос, но любая помощь в этом направлении будет высоко оценена.

Спасибо

Ответы [ 4 ]

3 голосов
/ 13 апреля 2010

С указанием времени cron "минутный час день месяц dayofweek" 3:33 с 1 по 15 каждого месяца будет "33 3 1-15 * *"

0 голосов
/ 13 апреля 2010

У меня тоже было это требование. Я следовал рецепту 75 «Автоматические периодические задачи» в Advanced Rails Recipes book . Рецепт написан Дэвидом Боком. В нем есть некоторые фрагменты кода и рекомендации о том, как этого можно достичь с помощью cron и capistrano. Однако существует нерешенная (но упомянутая) проблема, связанная с пользователями / разрешениями, которые должны быть на целевой машине. На самом деле это не сложно сделать правильно, вы просто должны помнить, чтобы сделать это, и поместить это в свои сценарии развертывания capistrano.

Похоже, что Дэвид Бок продолжал работать над этим и теперь создал гем для использования с cron: см. его блог и следуйте crondonkulous на github . Crondonkulous вполне может позаботиться об этой вещи пользователя / разрешения и даже больше, я не пробовал.

Ярл

0 голосов
/ 13 апреля 2010

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

В любом случае, вот несколько скриншотов из Railcasts, на которые вы можете посмотреть:

Скворец и рабочий

Пользовательский демон

0 голосов
/ 12 апреля 2010

Да, а почему бы и нет? Иди с хрон. Он действительно хорошо протестирован в естественных условиях, отлично подходит для выполнения периодических задач и невероятно прост в использовании. Вам даже не нужно изучать синтаксис crontab (хотя это очень просто) - просто поместите ваш скрипт в /etc/cron.daily (эта опция может быть доступна только в некоторых дистрибутивах Linux).

Я не уверен насчет «только первые пять дней месяца», но вы легко можете справиться с этим условием внутри своей задачи, верно?

EDIT:

Ознакомьтесь с ответом пар, чтобы увидеть, как выполнить задачу только в определенном диапазоне дней.

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