运行rake任务以在Heroku上启动Resque worker

时间:2011-08-16 02:45:23

标签: heroku rake backgroundworker redis resque

所以我在Heroku上设置了Resque和redis,这就是我的resque.rake文件的样子:

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"

我跑了heroku rake jobs:work并让一名工人跑了。这非常有效。我的后台工作正在完成。

然后我对我的代码进行了一些更改,推送到了heroku,仍然看到我有一个工作正在运行。但是,当工作被添加到队列中时,工作人员没有接收任何工作。所以我又跑了heroku rake jobs:work,它说有两个工人在跑步,我的工作正在完成。

我的问题是为什么会这样?每次推送到heroku时,是否需要运行此rake任务?有没有办法实现自动化?此外,虽然我有两个工作人员在运行,但似乎只有一个工作正常。有没有办法回到一个工人身上?

2 个答案:

答案 0 :(得分:3)

您应该将procfile用于heroku http://devcenter.heroku.com/articles/procfile

上的resque作业

请记住,Procfile用于新的Heroku Cedar Stack。

答案 1 :(得分:-1)

Resque只需要一名工人。您需要运行heroku rake jobs:work或使用Resque-Scheduler(cron或其他东西来运行该任务)来自动运行您的作业。