如何在Heroku上自动运行Queue_Classic(或任何)rake任务?

时间:2012-06-29 07:05:03

标签: ruby-on-rails heroku

我有一个使用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,这会产生影响吗?

3 个答案:

答案 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