所以我在 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
并让一名 worker 运行。这非常有效。我的后台作业正在完成。
然后我对我的代码做了一些更改,推送到 heroku,仍然看到我有一个 worker 在运行。然而,当工作被添加到队列中时,工作人员没有收到任何工作。所以我再次运行 heroku rake jobs:work
,它说我有两个 worker 在运行,我的工作正在完成。
我的问题是为什么会这样?每次推送到 heroku 时都需要运行这个 rake 任务吗?有没有办法自动化这个?另外,虽然我有两个 worker 在跑,但似乎只有一个在工作。有没有办法回到一个 worker 那里?
最佳答案
你应该在 heroku 上使用 Procfile 来重新请求作业 http://devcenter.heroku.com/articles/procfile
请记住,Procfile 用于新的 Heroku Cedar Stack。
关于heroku - 运行 rake 任务以在 Heroku 上启动 Resque worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7073109/