2015-08-15 5 views
1

Я использую resque на Heroku и не уверен, как начать рабочие процессы. Из учебников, которые я прочитал, есть две системы, и я не уверен в том, что лучше/правильно и каковы различия.Heroku resque начинающие работники

Учебник Heroku использует профиль https://devcenter.heroku.com/articles/queuing-ruby-resque#resque-on-heroku

resque: env TERM_CHILD=1 RESQUE_TERM_TIMEOUT=7 bundle exec rake resque:work 

Учебник RedisToGo не делает использование PROCFILE для Heroku и вместо этого делает использование грабли файла /lib/tasks/resque.rb (я думаю, что это файл должен называться resque.rake) http://redistogo.com/documentation/resque

require 'resque/tasks' 

task "resque:setup" => :environment do 
    ENV['QUEUE'] = '*' 
end 

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

Когда я использовал систему PROCFILE она создала третий Heroku дино (Web, Worker & Resque), тогда как я понимаю, что приведенный выше пример RedisToGo использует DynaTooler для Resque.

В дополнение к пункту выше, если я использую resque для моих фоновых заданий, есть ли необходимость в рабочем динамике в Heroku, или я могу просто создать web & resque dynos?

ответ

1

Хорошо, для тех, кто может следовать с тем же вопросом или для себя через 12 месяцев, когда я забыл ...

Мои исследования показывают, что два метода выше, являются взаимоисключающими. Либо запустите работника, используя метод профиля, либо запустите его с помощью последнего. Я не мог заставить метод procfile работать, но с последним мне не хватало необходимых переменных env для использования нового метода сигнализации. Мое решение было:

resque.rake

require 'resque/tasks' 

task "resque:setup" => :environment do 
    ENV['QUEUE'] = '*' 
    ENV['TERM_CHILD'] = '1' 
    ENV['RESQUE_TERM_TIMEOUT'] = '10' 
end 

desc "Alias for resque:work (To run workers on Heroku)" 
task "jobs:work" => "resque:work" 
+0

Спасибо это было находкой! – Sava

Смежные вопросы