在Heroku上同时使用Resque、Puma和Scheduler

mqkwyuun  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(135)

在查看了大量的指南后,我想确认我的设置。现在我的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

......在《英雄传》中:

......和我的rakeresque设置任务

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.我的procfile中是否需要Resque和worker配置?
1.我是否需要为调度员和工作人员分别设置一个dyno?这意味着总共需要3个dyno?

更新

我看到了这个帖子,我给了一个尝试https://grosser.it/2012/04/14/resque-scheduler-on-heroku-without-extra-workers/。目标是能够选择性地使用2个免费的dynos为我的网站和工人和调度程序。一旦应用程序的增长,我想打破他们到自己的dynos。

pu3pd22g

pu3pd22g1#

从我找到的博客帖子里
他现在提到地角色有了这个......

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

......一旦我们需要更多的dynos,就升级到这个......

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,直到我们想支付全职调度dynos。

bcs8qyzn

bcs8qyzn2#

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

从更新中提到的博客帖子

相关问题