Techioz Blog

Sidekiq のすべてのジョブのリスト [キューに入れられている + 実行中]

概要

現在キュー内にあり実行中のすべてのジョブのリストを取得する方法はありますか?基本的に、指定されたクラスのジョブがすでに存在するかどうかを知りたいのですが、他のジョブを挿入したくありません。他のオプションも見たのですが、この方法でやりたいと思います。

ここで、キュー内のジョブのリストを取得する方法を確認できます。

queue = Sidekiq::Queue.new("mailer")
queue.each do |job|
  job.klass # => 'MyWorker'
end

私の理解では、これにはジョブの処理/実行は含まれません。それらを入手する方法はありますか?

解決策

現在実行中のすべてのジョブをコンソールから一覧表示したい場合は、これを試してください

workers = Sidekiq::Workers.new
workers.each do |_process_id, _thread_id, work|
  p work
end

作品はハッシュです。

すべてのキュー データを一覧表示します。

queues = Sidekiq::Queue.all
queues.each do |queue|
  queue.each do |job|
    p job.klass, job.args, job.jid
  end
end

特定のキューの場合は、これを Sidekiq::Queue.new(‘queue_name’) に変更します。

同様に、Sidekiq::ScheduledSet.new を使用して、スケジュールされたすべてのジョブを取得できます。