2012-03-13 8 views
19

私はレール2.3.8にcollectiveideaを使用しています。私は にいくつかのタスクを実行する遅延ジョブの配列を作成しています、私は実行しているすべての遅延ジョブを破壊したいと思っています。 誰かがこれを行う方法を知っていれば私を助けてください。遅延ジョブをすべて破棄

答えて

50

あなたはこれだけを動作させるdelayed_job GitHub pageのためのREADMEを読んでする必要がありました:

あなたはすくいジョブを呼び出すことができます。キュー内のすべてのジョブを削除するには、clear。 rakeタスクに加えて

+2

これはOPが尋ねたことをしません。彼は実行中のジョブを強制終了しようとしていますが、キューをクリアしません。 – volx757

35

あなたはRubyのコードにしている場合は、あなたも一緒に好きなものを行うことができますので、DelayedJobの仕事は、単に通常のActiveRecordのモデルです:

Delayed::Job.destroy_all 
Delayed::Job.delete_all 
Delayed::Job.find(4).destroy 
# etc. 
+0

Delayed :: Job.find(4).destroyを詳しく教えてください。 – codeit

+1

@clickit IDが4の遅延ジョブを破棄します。 – lulalala

+1

'destroy'と' delete'に違いはありますか? –

0

は、「あなたのように聞こえますジョブのセットが一定の時間内に完了しない場合、タイムアウトしたい親プロセスがあります。ジョブ自体への参照にぶつかる代わりに、プロセスが諦めたことを示すフラグをモデルに設定します。ジョブがもう必要でない場合、ジョブはそのフラグと短絡をチェックできます。 (あなたのJobクラスもタイムアウトで#performメソッドの内容をラップする必要があります。)

あなたが示唆しているように、DJオブジェクトへの参照を掛けようとするのはほとんど常に悪い考えです。