Heroku планировщик Resque - PullRequest
       28

Heroku планировщик Resque

1 голос
/ 09 марта 2012

У меня есть приложение ruby ​​on rails (1.9.2 и 3.2), работающее на Heroku с Redis / Resque, которое требует, чтобы задача rake ставилась в очередь через регулярные промежутки времени.Прямо сейчас я запускаю 'heroku run rake update_listings' с моей локальной машины один или два раза в день .... Я хотел бы автоматизировать это.Я пробовал драгоценный камень всякий раз, когда задача не запускалась в фоновом режиме.Планировщик Heroku кажется подходящим решением, но меня смущает файл scheduler.rb.У меня есть:

desc "This task is called by the Heroku scheduler add-on"
task :hourly_feed => :environment do
  Rake::Task[update_listings].execute
end

Когда я запустил задачу: hourly_feed из консоли Heroku Scheduler и проверил логи heroku, я увидел, как несколько веб-дин закручивались с помощью hirefireapp, но грабли update_listings никогда не вызывались.

Обновление: я отказался от resque_scheduler.Я слишком зеленый, чтобы заставить это работать, поэтому пытаюсь использовать crontab и файл сценария.Вот мой файл сценария update.sh:

Rake::Task["update_listings"].execute

Я устанавливаю cron с помощью crontab-e, и он выполняется каждые 5 минут, но я получаю сообщение об ошибке в почтовых журналах:

Projects/livebytransit/update.sh: line 1: Rake::Task[update_listings].execute: command not found

Похоже, он находит мой скрипт-файл update.sh и читает его, но не выполняет код.Я заметил, что в записи журнала пропущены кавычки, поэтому я также попытался использовать одинарные кавычки в файле сценария оболочки, без изменений.Я также попытался изменить файл update.sh следующим образом:

heroku run rake update_listings

ошибка вернулась heroku: command not found

Ответы [ 2 ]

0 голосов
/ 16 июля 2012

Оказывается, Heroku Scheduler работает отлично ... Я просто забыл цитаты вокруг "обновленных списков".

0 голосов
/ 13 марта 2012

Лично я использовал resque_scheduler, который будет добавлять задания в очередь resque / redis с помощью cron.

resque_schedule.yml

count_delayed_jobs_job:
 cron: "0 */1 * * *"
 class: Support::CountDelayedJobsResque
 queue: CDJ
 args: 
 description: "count_delayed_jobs_job, every 1hr"

или же вы можете просто бросить Rake::Task["update_listings"].executeсценарий оболочки и используйте crontab для запуска задания.

...