【问题标题】:Heroku resque starting workersHeroku resque 启动工人
【发布时间】:2015-11-08 10:32:30
【问题描述】:

我在 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 教程没有使用 Heroku 的 procfile,而是使用 rake 文件 /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 dyno(Web、Worker 和 Resque),而我理解上面的 RedisToGo 示例使用 Resque 的 Worker dyno。

如果我将 resque 用于我的后台工作,那么更进一步,是否需要 Heroku 中的 worker dyno 或者我可以只拥有 web 和 resque dyno?

【问题讨论】:

    标签: ruby-on-rails heroku


    【解决方案1】:

    好的,对于那些可能会提出相同问题的人,或者对于我在 12 个月后忘记的我自己......

    我的研究表明上述两种方法是相互排斥的。要么使用 profile 方法启动 worker,要么使用后者启动它。我无法让 procfile 方法工作,但是对于后者,我缺少使用新信号方法所需的环境变量。我的解决方案是:

    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"
    

    【讨论】:

    • 谢谢你,这是天赐之物!
    猜你喜欢
    • 2013-04-02
    • 2012-09-01
    • 1970-01-01
    • 2011-10-27
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多