Вопрос

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

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

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

Спасибо

Это было полезно?

Решение

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

Другие советы

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

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

Скворец и Ворклинг

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

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

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

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

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

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

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

Ярл

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top