Rails + Heroku :: грабли внутри задачи cron - PullRequest
2 голосов
/ 09 октября 2011

Вопросы

1) При запуске задач cron в Heroku есть ли у Heroku ограничение по времени, когда задачи cron должны длиться всего X минут, или может ли задача cron запускаться в течение любого времени, необходимого для завершения обработки?

2) Чтобы оптимизировать свое приложение, я хочу перевести всю свою обработку в пакетный режим.Поэтому у меня много запросов на обновление.По сути, один файл Heroku cron становится грязным.Что я могу сделать, чтобы очистить код?Должен ли я создавать несколько рейковых задач и вызывать их из файла cron?

2.1) Если вы согласны с этим, то как мне вызвать rake задачи из задачи cron?Допустим, есть 3 независимых рейк-задания. Рейк-аккаунты: биллинг, рейк-аккаунты: коллекции, рейк-аккаунты: очистка.Как мне их вызвать в файле cron?

1 Ответ

3 голосов
/ 09 октября 2011

Нет никаких временных ограничений, о которых я знаю.

Хорошей идеей является использование нескольких задач вместо одной большой задачи cron. Мало того, что их легче отлаживать и обслуживать, когда они разделены, но вы также можете легко запускать их по мере необходимости. И хорошо продуманный код сам по себе является хорошей идеей.

Выполнение задачи из другой задачи так же просто, как Rake::Task[task].execute. У вас будет что-то вроде этого:

desc 'Heroku cron job'
task :cron => :environment do
    %w{accounts:billing accounts:collections accounts:cleanup}.each do |task|
        Rake::Task[task].execute
    end
end
...