現在キューにあり実行中のすべてのジョブのリストを取得する方法はありますか?基本的に、特定のクラスのジョブが既に存在するかどうかを知りたいのですが、他のジョブを挿入したくありません。私は他のオプションを見てきましたが、この方法でやりたいです。
here キュー内のジョブのリストを取得する方法を見ることができます。
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
_
work
はハッシュです。
すべてのキューデータを一覧表示します。
_queue = Sidekiq::Queue.all
queue.each do |job|
p job.klass, job.args, job.jid
end
_
特定のキューの場合、これをSidekiq::Queue.new('queue_name')
に変更します
同様に、_Sidekiq::ScheduledSet.new
_を使用してすべてのスケジュール済みジョブを取得できます
エンキュー時にSidekiqへの引数としてハッシュを渡したと仮定します。
args = {
"student_id": 1,
"student_name": "Michael Moore"
}
YourWorker.perform_in(1.second,args)
その後、アプリケーションのどこからでも、次のように取得できます
ss = Sidekiq::ScheduledSet.new
student_id_list = ss.map{|job| job['args'].first["student_id"]}