所以我在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任务?有没有办法实现自动化?此外,虽然我有两个工作人员在运行,但似乎只有一个工作正常。有没有办法回到一个工人身上?
答案 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或其他东西来运行该任务)来自动运行您的作业。