我不小心在 Sidekiq 中排队了一堆作业。我不想擦除整个 Redis 存储(并将所有 Sidekiq 数据和排队作业重置为零),但我想删除可以由给定类识别的所有排队作业。我该怎么做?
这些答案很有帮助,但没有回答我原来的问题。这些解决方案可能已经过时了。
您必须访问作业的参数并在循环范围内获取它的实际作业类。我尝试了上面的方法,但它没有按预期工作,因为job.klass
不会返回您期望的结果。
这是当前在终端中返回的内容:
queue.each do |job|
puts job.klass
end
ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper
=> nil
所以我的解决方案是深入研究工作的论点,如下所示:
queue = Sidekiq::Queue.new("job_queue_name")
queue.each do |job|
puts job.args.first['job_class']
job.delete if job.args.first['job_class'] == "Things::DoesThatThingJob"
end
我确信有一种方法可以更优雅地编写此内容(也许可以使用选择?)
但它是可读的。
希望我能够帮助像我一样正在寻找类似东西的其他人。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)