Использование Resque, Puma и Scheduler вместе на Heroku

После просмотра многочисленных руководств я хотел бы подтвердить свои настройки. Прямо сейчас мой procfile выглядит так:

web: bundle exec puma -C config/puma.rb config.ru
resque: TERM_CHILD=1 RESQUE_TERM_TIMEOUT=10 QUEUES=* bundle exec rake resque:work
worker: bundle exec rake resque:work COUNT=1 QUEUE=*
scheduler: bundle exec rake resque:scheduler

... и в Героку:

... и моя задача установки rake resque:

require 'resque'
require 'resque/tasks'
require 'resque/scheduler/tasks'

# http://jademind.com/blog/posts/enable-immediate-log-messages-of-resque-workers/
namespace :resque do
  desc 'Initialize Resque environment'
  task setup: :environment do
    ENV['QUEUE'] ||= '*'
    Resque.logger.level = Logger::INFO
  end

  task scheduler_setup: :environment
end

desc 'Alias for resque:work'
task 'jobs:work' => 'resque:work'

Итак, вот мои вопросы:

  1. Нужна ли мне как Resque, так и рабочая конфигурация в моем procfile?
  2. Нужно ли иметь отдельный динамо для планировщика и рабочего? Это значит 3 полных динамо?

Обновить

Я наткнулся на это сообщение, которое я пробую https://grosser.it/2012/04/14/resque-scheduler-on-heroku-without-extra-workers/. Цель состоит в том, чтобы иметь возможность по желанию использовать 2 бесплатных динамо для моей сети, рабочих и планировщика. Как только приложение растет, я хочу разбить их на своих динамов.

2 ответа

Решение

Из сообщения в блоге я нашел

Он упомянул роль с этим сейчас...

web: bundle exec puma -C config/puma.rb config.ru
worker: bundle exe rake schedule_and_work COUNT=1 QUEUE=* TERM_CHILD=1 RESQUE_TERM_TIMEOUT=10

... и обновиться до этого, как только нам нужно больше динамо...

web: bundle exec puma -C config/puma.rb config.ru
resque: TERM_CHILD=1 RESQUE_TERM_TIMEOUT=10 QUEUES=* bundle exec rake resque:work
worker: bundle exec rake resque:work
scheduler: bundle exec rake resque:scheduler

Это позволит нам использовать веб-dyno, пока мы не захотим платить за полный рабочий день планировщика.

      require 'resque/tasks'
require 'resque_scheduler/tasks'
# Scheduler needs very little cpu, just start it with a worker.
desc "schedule and work, so we only need 1 dyno"
task :schedule_and_work do
  if Process.fork
    sh "rake environment resque:work"
  else
    sh "rake resque:scheduler"
    Process.wait
  end
end

Из сообщения в блоге, упомянутого в обновлении

Другие вопросы по тегам