2013-04-10 97 views
2

我已經成功排隊工作,我可以在resque web上看到。Heroku resque no worker

但是這項工作永遠不會執行,只是等待。我的heroku應用程序上有1名工作人員。在resque統計工作者爲0

在LIB /任務/ resque.rb:

require 'resque/tasks' 

task "resque:setup" => :environment do 
    ENV['QUEUE'] = '*' 

    Resque.after_fork do |job| 
    ActiveRecord::Base.establish_connection 
    end 

end 

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

正在開始這1名工人? – messick 2013-04-10 17:16:41

+0

我如何開始這1名工人?我已經嘗試過'heroku運行bundle exec rake jobs:work'但是出現錯誤。不知道如何建立任務.. – 2013-04-10 17:18:16

+0

你說**我在我的heroku應用程序**有1名工人。那是什麼意思? – messick 2013-04-10 17:19:33

回答

1

你必須告訴Heroku的通過Procfile,以啓動Resque工人。這就是你要在本地運行的命令的地方,比如RAILS_ENV=Production QUEUE=* bundle exec rake jobs:work

這給你在本地測試Heroku Resque的額外好處,通過使用相同的Profile來啓動Resque工作人員與工頭。

Here是Heroku網站上的一個鏈接,它解釋瞭如何設置。

+0

不幸的是我使用Windows,因此只能在Heroku上測試。爲什麼我不能通過在控制檯中運行此命令啓動1個工作者:'heroku run bundle exec rake jobs:work' – 2013-04-10 17:30:25

+0

Typo ..文件應該命名爲resque.RAKE ...現在工作正常。 – 2013-04-10 17:59:50

+0

呵呵,沒有意識到工頭在Windows上沒有工作。 – messick 2013-04-10 18:41:56

0

正如@messick說你需要與Procfile執行resque工人登記,以防萬一你不真正關心的已經建立了enviroments只是在你的Procfile加上這些行:

resque: env TERM_CHILD=1 COUNT=1 QUEUE=* bundle exec rake resque:work 
worker: bundle exec rake resque:work COUNT=1 QUEUE=* 

如果需要一個調度程序只是添加這一行

scheduler: bundle exec rake resque:scheduler 
+1

爲什麼你需要在procfile中聲明'resque:'和'worker:'? – Marklar 2014-10-28 03:13:40

+0

我的意思是給更多的例子...在我的情況下,我確實有一個工人(一個線程我在我的頁面執行,這只是用angularjs加載我的網站)和一個resque過程(這將自動執行通過使用YML文件道具) – d1jhoni1b 2014-10-29 17:22:11