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

У меня есть приложение 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 и проверял журналы heroku, я видел, как приложение найретефира запускало несколько веб-динамиков, но рейк-задача 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


person tomb    schedule 09.03.2012    source источник


Ответы (2)


Лично я использовал 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 для запуска задания.

person TomDunning    schedule 13.03.2012
comment
Спасибо, я обновил свой вопрос, указав некоторые проблемы, с которыми я столкнулся при попытке решения crontab. - person tomb; 16.07.2012
comment
Как ваша процедура настроена для этого? @TomDunning resque puma rails 5 установка планировщика resque"> stackoverflow.com/questions/41537142/ - person Chris Hough; 08.01.2017
comment
@chrishough, что делать? Выполнить планировщик? Это часть жемчужины resque_scheduler - person TomDunning; 09.01.2017

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

person tomb    schedule 16.07.2012