web-dev-qa-db-ja.com

redis-cliを介してresqueジョブを検査して再試行します

まだ作業が必要な問題があるため、サーバーでresque-webを実行できませんが、resqueキューで失敗したジョブを確認して再試行する必要があります。

失敗したジョブキューをピークしてエラーが何であるかを確認し、redis-cliコマンドラインを使用して再試行する方法についての経験はありますか?

ありがとう、

25
Horacio

次のリンクで解決策を見つけました:

http://ariejan.net/2010/08/23/resque-how-to-requeue-failed-jobs

Railsコンソールでは、次のコマンドを使用して、失敗したジョブを確認して再試行できます。

1-失敗したジョブの数を取得します。

 Resque::Failure.count

2-エラー例外クラスとバックトレースを確認します

Resque::Failure.all(0,20).each { |job|
   puts "#{job["exception"]}  #{job["backtrace"]}"
}

ジョブオブジェクトは、失敗したジョブに関する情報を含むハッシュです。あなたはより多くの情報をチェックするためにそれを調べるかもしれません。また、これには失敗した最初の20個のジョブのみがリストされることに注意してください。それらすべてをリストする方法がわからないため、リスト全体を取得するには値(0、20)を変更する必要があります。

3-失敗したすべてのジョブを再試行します。

(Resque::Failure.count-1).downto(0).each { |i| Resque::Failure.requeue(i) }

4-失敗したジョブの数をリセットします。

 Resque::Failure.clear

すべてのジョブを再試行しても、カウンターはリセットされません。ゼロになるようにクリアする必要があります。

62
Horacio