2010-04-12 4 views
2

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

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

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

Thanks

ответ

3

С «минута час день месяц DAYOFWEEK» время спецификации CRON, в 3:33 утра 1-го по пятнадцатый каждого месяца будет «33 3 1-15 *»

+0

Очень круто. Не знал, что вы можете делать такие диапазоны. +1 –

+0

большое спасибо за это ... Я понятия не имел, что это будет так просто! – hashpipe

0

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

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

EDIT:

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

+0

может пожелать рассмотреть railscron - http: // workwithrails.com/railsplugin/4962-rails-cron – klochner

0

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

Во всяком случае здесь мало экран бросает из Railcasts вы можете посмотреть по адресу:

Starling and Workling

Custom Daemon

0

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

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

Jarl

Смежные вопросы