Resque Scheduler на Heroku ... Делать это удаленно? - PullRequest
5 голосов
/ 01 октября 2010

Я добавляю Resque-Scheduler в мое приложение на Heroku

Итак ... Мне нужен ОДИН одинокий и отдельный работник, выполняющий функции планировщика, и многие выполняющие работу.

Вот как я это сделал:
У меня есть отдельное приложение Heroku, которое ничего не делает, но имеет 1 рабочий-планировщик задач, работающий 24/7 и добавляющий задачи Resque вRedis DB "далекой" основной приложения.

(я делаю это отображение заданий: работа задача на resque: планировщик или resque: work )

Это лучший способ сделать это на платформе Heroku;или я делаю это совершенно неправильно?

Спасибо!

РЕДАКТИРОВАТЬ: минимальное приложение для планирования на Heroku: http://github.com/clmntlxndr/heroku-scheduler

ОБНОВЛЕНИЕ: С новым стеком CEDAR на Heroku и Procfiles, можно запустить отдельную задачу для каждого работника.

web:        bundle exec rails server -p $PORT
scheduler:  bundle exec rake resque:scheduler
worker:     bundle exec rake jobs:work

http://devcenter.heroku.com/articles/procfile

1 Ответ

3 голосов
/ 02 октября 2010

Кажется, я неправильно понял ваш вопрос в первый раз.Я пропустил ту часть, где планировщику требуется отдельное задание рейка.

Да, я думаю, что единственный способ сделать это - это иметь два отдельных приложения heroku, потому что работники heroku будут запускать только rake jobs:work и, вероятно, вы можете толькосопоставьте это с одной из задач по восстановлению граблей.

Вы можете попробовать это:

desc "Alias for resque:work (To run workers on Heroku)"
task "jobs:work" => ["resque:work", "resque:scheduler"]

Но я искренне сомневаюсь в том, что это на самом деле правильно работает с тем, как Heroku отслеживает рабочие процессы и все такое.Кроме того, дважды проверьте синтаксис рейка там;это просто по памяти.Я знаю, что можно указать несколько зависимостей.

...