0

Railsアプリにresqueキューイングシステムを実装しました。エンキューからキューから削除されるまでのresqueジョブのフローを知りたい。

従来のワークフローとgemから使用されるメソッドは、
1。Resqueがジョブをキューに入れる(Resque :: Job.create)、
2。ジョブがクラスの「perform」メソッドを呼び出す(Resque :: Job.perform)、および
3。 Resqueはキューからジョブを削除します。

手順3で使用した方法を見つけるためにgemをデバッグしましたが、見つかりませんでした。メソッドResque::Job.destroy、Resque :: Job.dequeueは、デバッグしたとおり、このタスクを担当していません。キューからジョブを削除するために使用する方法を教えてもらえますか

明示的にジョブを削除したくないことに注意してください。キューからジョブを削除する一般的なresqueメソッドが必要です。

前もって感謝します。

4

2 に答える 2

4

Resque は実際に「dequeue」メソッドを使用してジョブを削除します。

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

キューからジョブを選択して処理するには、'pop' メソッドを使用します。

  def pop(queue)
    decode redis.lpop("queue:#{queue}")
  end 
于 2011-02-23T11:17:14.060 に答える
0

so if the worker fails (or we press ctrl+c) there is no trace of the removed job. I think job should only be lpoped only if the job is done without any exception

于 2012-11-27T15:11:48.550 に答える