3

我已经成功排队了一个工作,我可以在 resque web 中看到。

但这项工作永远不会执行,只是待定。我的 heroku 应用程序上有 1 名工作人员。在 resque stats 中,工人为 0。

在 lib/tasks/resque.rb 中:

require 'resque/tasks'

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

  Resque.after_fork do |job|
    ActiveRecord::Base.establish_connection
  end

end

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

2 回答 2

1

你必须告诉 Heroku 通过Procfile. 这是您放置要在本地运行的命令的位置,例如RAILS_ENV=Production QUEUE=* bundle exec rake jobs:work

这为您在本地测试 Heroku Resque 设置提供了额外的好处,方法是使用相同Profile的方法启动带有 Foreman 的 Resque 工作人员。

是 Heroku 网站上的一个链接,它解释了如何进行设置。

于 2013-04-10T17:26:04.967 回答
0

正如@messick 所说,您需要使用 Procfile 执行 resque 工作人员注册,以防万一您真的不关心已设置环境,只需在您的 Procfile 中添加以下行:

resque: env TERM_CHILD=1 COUNT=1 QUEUE=* bundle exec rake resque:work 
worker: bundle exec rake resque:work COUNT=1 QUEUE=*

如果需要调度程序,只需添加此行

scheduler:  bundle exec rake resque:scheduler
于 2014-08-23T23:23:43.153 回答