2015-11-06 8 views
6

私はRails APPでジョブ管理にSidekiqを使用しています。私はあなたが失敗したジョブ(Ids、オブジェクト、エラーメッセージなど)の引数をどのように取得するのか知りたいですか? WebUIでは、失敗したジョブの数はすべて取得できます。私が正しく理解していれば、デフォルトでは、特定のジョブが失敗した回数をすべて加算することになります。私は自分のアプリをデプロイしており、それはいくつかのワーカーで動作しています。何日も経っているsidekiq.logを持っている場合、すべてのワーカーを調べて調べるのは難しいです。引数の付いた失敗したSidekiqジョブのリストを見つけよう

回答を検索しています。最も近いものの1つは、folowingリンクに記述されています。

How to find failed jobs list in sidekiq?

これは私が時間をかけて持っているどのように多くの失敗したジョブを見つけることができます。しかし、私はまだ仕事が失敗した理由とその理由を知る方法を知らない。

基本的に、私は何らかの形でjob_idsを収集し、失敗したものがあるか、簡単な方法があれば、Sidekiq/Redisを照会して、失敗したジョブの引数とエラーを確認します。

また、私は、このリンクを訪問した:ここでGet error message out of Sidekiq job

は私が

class ClassificationJob < ActiveJob::Base 
queue_as :default 

def perform(entity) 
    entity.preprocess! 
    entity.classify! 
end 
end 

を使用しています例ジョブである私は、この

class ClassificationJob < ActiveJob::Base 
queue_as :default 

def perform(entity) 
    entity.preprocess! 
    entity.classify! 
    store entity_id: entity.id.to_s 

    entity_id = retrieve :entity_id 
end 
end 

に変更しようとしたが、それは次のようなエラーを吐きます:

ArgumentError: You cannot include Sidekiq::Worker in an ActiveJob: ClassificationJob 

おかげで、あなたはリトライを探している

ヤニック

答えて

4

。 "再試行"とは、失敗して将来、いつか再試行されるジョブのSidekiqの言葉です。

のWeb UIを再試行]タブの[再試行をリストするAPIのウィキ・ページに記述さSidekiqのAPIを使用しています。

https://github.com/mperham/sidekiq/wiki/API#retries

retries = Sidekiq::RetrySet.new 
retries.each do |job| 
    p [job.klass, job.args, job.jid] 
end 
+0

ありがとうございます。私の理解から、失敗して再試行される仕事があります。 WebUIでは、「再試行」ボタンをクリックするとリストに表示されます。他は失敗しています(クリックする方法はありません)。これらのうちのいくつかは再試行されていないようです(そうしないと、何度も再試行する必要があるため、失敗したリストに入るのに時間がかかります)。私の特別な関心はそれらのものです。私はここで何かを誤解していますか? – Yann

+2

"失敗"は、エラーを発生させたジョブの実行試行です。ジョブがN回失敗することがあります。そのため、失敗は解消できません。それは単なるカウンタです。ジョブが再試行を無効にすると、ジョブは一時的なものになり、エラーを増やす以外はUIに表示されません。 –

+0

あなたの親切で速い返信ありがとうございました。 – Yann

1

私はちょうど異なる絞り込むための方法を探してきました特定のキューからのコンソールの障害のタイプ。

あなたの労働者のリストを取得するには、

を掘りのビット後:

query = Sidekiq::Failures::FailureSet.new.map(&:item) 

query.map { |item| item['class'] }.uniq # Gives you a sense of what failed 
query.map { |item| item['wrapped'] }.uniq # Gives you the job's original class 
query.map { |item| item['queue'] }.uniq # Gives you a name of each of the queues 
query.map { |item| item['args'] }.uniq # This would give you all the argument hashes for all failures. 

引数のハッシュは、次のキーを持っています

job_class 
job_id 
queue_name 
arguments 
locale 

は、私はあなたが持っていると思いますこの宝石は働きます:https://github.com/mhfs/sidekiq-failures

関連する問題