2011-02-23 64 views
0

我已經在我的rails應用程序中實現了resque queuing系統。我想知道從排隊開始的隊列作業從隊列中移出的流程。resque如何從隊列中刪除作業?

傳統工作流程,與方法沿着從寶石使用是,
1. Resque排隊作業(Resque :: Job.create),
2.作業調用 '執行' 類的方法(Resque :: Job.perform)和
3. Resque從隊列中刪除作業。

我調試了gem以找出步驟3中使用的方法,但找不到它。方法在調試時,Resque :: Job.destroy,Resque :: Job.dequeue不負責此任務。任何人都可以告訴我使用從隊列中刪除作業
的方法。
請注意,我不想明確地刪除作業,我想要從隊列中刪除作業的典型resque方法。

在此先感謝。

回答

4

Resque實際使用「出隊」的方法來刪除工作:

def dequeue(klass, *args) 
    Job.destroy(queue_from_class(klass), klass, *args) 
    end 

要選擇從隊列中作業的處理,它使用了「彈出」方法:

def pop(queue) 
    decode redis.lpop("queue:#{queue}") 
    end 
0

所以如果工作人員失敗(或者我們按ctrl + c),沒有任何刪除作業的痕跡。 我認爲工作只有在工作沒有任何異常的情況下才能被啓用