2015-08-15 55 views
1

我在Heroku上使用resque,並且不確定如何啓動工作進程。從我讀過的教程中可以看出,有兩個系統得到了推廣,我不確定哪個是最好的/正確的,以及它們之間有什麼不同。Heroku resque starting workers

Heroku的教程使用輪廓 https://devcenter.heroku.com/articles/queuing-ruby-resque#resque-on-heroku

resque: env TERM_CHILD=1 RESQUE_TERM_TIMEOUT=7 bundle exec rake resque:work 

的RedisToGo教程讓沒有使用Heroku的一個procfile的,而是利用耙子文件/lib/tasks/resque.rb的(我認爲這文件應該被稱爲resque.rake) http://redistogo.com/documentation/resque

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的測功機的procfile系統(網絡,工人& Resque),而我理解上面的RedisToGo示例使用Resyn的Worker dyno。

更進一步,如果我使用resque作爲我的後臺作業,在Heroku中是否有任何需要工人測功機的問題,或者我可以只用Web & resque dynos?

回答

1

好吧,對於那些可能具有相同問題或爲自己遵循12個月的時間,當我已經忘記了...

我的研究表明,上述兩種方式是互斥的。使用配置文件方法啓動worker或使用後者啓動它。我無法讓procfile方法工作,但後者我錯過了使用新信號方法所需的env變量。我的解決辦法是:

resque.rake

require 'resque/tasks' 

task "resque:setup" => :environment do 
    ENV['QUEUE'] = '*' 
    ENV['TERM_CHILD'] = '1' 
    ENV['RESQUE_TERM_TIMEOUT'] = '10' 
end 

desc "Alias for resque:work (To run workers on Heroku)" 
task "jobs:work" => "resque:work" 
+0

謝謝你,這是一個天賜良機! – Sava