2012-06-29 93 views
1

我有一个使用Queue_Classic gem的Rails 3.2应用程序,并部署在Heroku上。如何在Heroku上自动运行Queue_Classic(或任何)rake任务?

目前我排队的作业没有被处理,除非我在命令行中运行heroku run rake qc:work

我添加了一个Procfile含有下列:

worker: bundle exec rake qc:work 

,但仍然没有队列的处理,除非我手动运行heroku run rake qc:work

我错过了什么?

这个应用程序使用独角兽,这可能会产生影响?

回答

0

经过一番周围挖,我想出了以下解决方案。

我不确定这是否是最好的方法,或者它会如何扩展web进程等,但它现在还在使用。

我成立麒麟像往常一样,包括

#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 
0

*一定要包括在主Rake文件queue_classic和queue_classic /任务。*

1

通常你的员工从你的网络的过程独立运行。要运行一名工人,您需要设置您的工艺编队运行1名工人:

$ heroku scale worker=1