我有一个使用Queue_Classic gem的Rails 3.2应用程序,并部署在Heroku上。
目前我的排队作业未被处理,除非我在命令行中运行heroku run rake qc:work
。
我添加了包含以下内容的Procfile:
worker: bundle exec rake qc:work
但除非我手动运行heroku run rake qc:work
,否则仍然没有处理队列。
我错过了什么?
这个应用程序使用Unicorn,这会产生影响吗?
答案 0 :(得分:1)
通常,您的员工独立于您的Web流程运行。要运行一个worker,你需要设置你的流程形成来运行1个worker:
$ heroku scale worker=1
答案 1 :(得分:0)
*确保在主Rakefile中包含queue_classic和queue_classic / tasks。*
答案 2 :(得分:0)
经过一番挖掘后,我想出了以下解决方案。
我不确定这是否是最好的方法,或者它在我们扩展网络流程等方面的表现如何,但它现在正在运作。
我像往常一样设置独角兽,包括
#Procfile
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
然后我添加了以下配置
#unicorn.rb
worker_processes 3
timeout 30
@qc_pid = nil
before_fork do |server, worker|
@qc_pid ||= spawn( "bundle exec rake qc:work" )
end