2011-11-17 69 views
2

我有意使用Resque將工作分配到許多不同的計算機。但我有一個擔憂。如果我需要殺死從事某項工作的其中一名工人,我希望能夠自動重新執行該工作,以確保該工作由另一名工人來運行。我與Django Celery一起工作,只是做CTRL + C殺死工作人員並重新執行任務。有沒有辦法讓Rails中的Resque發生這種情況?謝謝!使用Resque重新排隊工作

+0

你肯定Resque不會自動重新排隊? Resque假定混亂,所以如果它正常工作,我不會感到驚訝。 –

+0

我試過了。我用兩種不同的工作跑了兩名工人。我對其中一名工作人員做了CTRL-C,當我檢查Resque-web時,它看起來好像它已經成功處理了這個工作,而我沒有終止的工作人員沒有拿起額外的工作。 = /如果我可以捕獲該CTRL-C並優雅地讓工作人員退出並重新執行作業。 – Silverbolt

回答

3

我只是想通了。我可以捕獲信號項(CTRL-C)並強制它重新執行作業或告訴作業失敗並在稍後重新嘗試重新執行作業。

例如:

def self.perform(args) 
    trap("INT") do 
    puts "Signal was caught!" 
    #either raise an error here if using a tool like resque-retry or requeue the job 
    end 
    #Do work here 
end 

對不起,愚蠢的問題;)

+0

不是一個愚蠢的問題! :) – gef