2013-04-12 86 views
0

我在resque queue中運行crawler,它是一個爬蟲並將數據提取到數據庫中... 我想停止它.. 然後我在服務器I中啓動控制檯使用命令:ruby​​ on rails如何殺死resque worker

irb(main):001:0> Resque.working[0].id 
=> "09ec127d-bb90-4629-a6f2-bb2610885ab5:62:*" 
irb(main):003:0> Resque.remove_worker("09ec127d-bb90-4629-a6f2-bb2610885ab5:62:*") 
=> 0 

雖然在/ resque頁...它沒有顯示出工人正在運行...但我發現在數據庫中增加....它仍然將數據寫入到數據庫中。

回答

3

下面是我如何殺死我的工人:

pids = Array.new 

puts "Killing resque workers ... " 
Resque.workers.each do |worker| 
    pids << worker.to_s.split(/:/).second 
end 

if pids.size > 0 
    system("kill -QUIT #{pids.join(' ')}") 
end 
+0

我需要上傳代碼嗎?我可以在控制檯中使用命令來殺死它們嗎? – linzilan

+0

@linzilan嘗試http://www.kensodev.com/2011/09/17/kill-all-resque-workers-with-a-single-command/ – Agis

+0

@linzilan,在你的例子中你是在IRB。可以肯定地說,這個答案假定你在IRB或Rails控制檯方面有一些經驗。 – Tass