2011-07-24 142 views
4

我使用本指南設置Resque與Redis的http://blog.redistogo.com/2010/07/26/resque-with-redis-to-go/如何殺死Heroku上的resque工人?

我擁有這一切成立,當我把東西它出現在我的resque隊列。這是在heroku,然後我跑

heroku rake resque:work QUEUE=* 
(in /app) 
Starting the New Relic Agent. 
Installed New Relic Browser Monitoring middleware 
Connected to NewRelic Service at collector-1.newrelic.com:80 
^C 
[canceled] 

然後,這完成了工作,但現在工人仍然在那裏。我現在如何刪除/殺死工作人員?

我目前有這個0 of 4 Workers Working我想讓它在隊列中的任務完成後工作人員只是刪除自己。我將如何繼續這樣做,還是有另一個我需要調用的heroku終端命令。

同時做resque工人花費在heroku上的任何錢嗎?我只是想讓我可以在我的resque隊列中手動觸發任務。我不需要它自動做它。

回答

3

要與heroku工作者集成,您需要實施一項名爲jobs:work的rake任務。爲了得到這個工作與resque您需要將以下任務添加到耙文件(從http://blog.redistogo.com/2010/07/26/resque-with-redis-to-go/拍攝):

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上使用一個工人:

? heroku workers 1 

要關閉後臺工人做:

? heroku workers 0 

要使用5名工人做:

? heroku workers 5 

Heroku通過第二次爲您運行的每個工作人員收費。如果您登錄到heroku,您將能夠看到您當前的工作人員數量將在您的應用的資源頁面上花費多少。

0

你試過HireFire

它專門設計用於在Heroku上擴大/縮小Resque(和延遲作業)工人。

+0

不幸的是,我認爲他是在談論在工作之後閒置的工人閒置,而不是heroku dynos。 – AJP

1

在Heroku Cedar Stack上,這很容易,這是命令將工作人員數量更改爲n,您將運行此命令,並且它會殺死/創建工作人員以實現n

heroku ps:scale worker=n --app your-app-name 

看到這篇文章在Heroku的更多細節:https://devcenter.heroku.com/articles/scaling

+0

不幸的是,他正在談論的是在工作之後閒置的工人閒置,而不是heroku dynos。 – AJP

+0

其實我的答案是爲resque工作者,而不是heroku dynos。爲了改變dynos,命令將是'heroku ps:scale web = n --app your-app-name' –

9

我知道這是一個老問題,但你可以從控制檯做到這一點:

$ heroku run console 
irb(main):001:0> Resque.working[0].id 
=> "09ec127d-bb90-4629-a6f2-bb2610885ab5:62:*" 
irb(main):002:0> Resque.working.length 
=> 28 
irb(main):003:0> Resque.remove_worker("09ec127d-bb90-4629-a6f2-bb2610885ab5:62:*") 
=> 0 
irb(main):004:0> Resque.working.length 
=> 27 
irb(main):005:0> 

我還沒有嘗試過但也有一個gem for doing this manually,聽起來像你想自動化它。

+1

它現在是'heroku run console' – shem

+0

謝謝@shem,已更新。 – AJP