AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

Rails console から Sidekiq のキューを調査する

以前 console から接続できない場合に、という感じで以下記事を書いた。

donbulinux.hatenablog.jp

とはいえハングアップするのは、よっぽどギリギリのリソースで動かしているとかじゃなければ頻発しないはずなので、通常時どうするのか、というお話。

キューとジョブ

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
...

実際に出力される内容は異なるのと思うので、なんか出るくらいの認識でよろしくおねがいします。

参考

spirits.appirits.com

akinov.hatenablog.com