以前 console から接続できない場合に、という感じで以下記事を書いた。
とはいえハングアップするのは、よっぽどギリギリのリソースで動かしているとかじゃなければ頻発しないはずなので、通常時どうするのか、というお話。
キューとジョブ
sidekiq で管理している大きな単位はキューと呼び、実際に処理される内容がキュー内のジョブに詰まっています。
身近な例だと名字と名前みたいなものでしょう。 こうやって変に例えると理解が追いつかないので、ジョブはキュー単位でまとめられる、と理解できなくても素直に思い込んでください。
キュー名を確認する
Sidekiq::Queue.all
を利用します。
実際に出力してみると以下のようになります。
root@ip-10-0-1-240:/app# bundle exec rails c Loading staging environment (Rails 6.1.6) irb(main):001:0> Sidekiq::Queue.all => [#<Sidekiq::Queue:0x00007f5368df7f88 @name="default", @rname="queue:default">]
(キューに登録されている) 実行待ちジョブを確認する
Sidekiq::Queue.new('${キューの名前}').entries
を利用します。 キューの名前には、キュー名を確認した際に出力された @name=
の値を指定します、今回は default ですね。
実際に出力してみると以下のようになります。
Sidekiq::Queue.new('default').entries => []
今回はジョブがなかったので []
が帰ってきました。 なにかあると色々出力されるはずです。
リトライ待ちジョブ一覧の確認
Sidekiq::RetrySet.new.entries
を利用します。 実行が失敗し待機している状態です。
実際に出力してみると以下のようになります。
#<Sidekiq::SortedEntry:0x00007f5368785c18
...
実際に出力される内容は異なるのと思うので、なんか出るくらいの認識でよろしくおねがいします。