2012-06-29 90 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