我正在使用 Sidekiq 通过 Rails APP 进行作业管理。我想知道您如何获取失败作业的参数(ID、对象、错误消息等...)?在 WebUI 上,您得到的只是失败作业的数量。如果我理解正确,默认值是将给定作业失败的所有次数相加。我已经部署了我的应用程序,它正在几个工作人员上运行。很难检查每个工作人员并试图找出答案,尤其是当您有很多天以前的 sidekiq.log 时。
我在这里和网上搜索答案。在以下链接中描述了最接近的一个。
How to find failed jobs list in sidekiq?
这允许找出我在一段时间内有多少失败的工作。但是,我仍然不知道如何确切地知道什么工作失败以及为什么失败。
基本上,我想以某种方式收集 job_ids 并定期检查哪些失败了,或者是否有更简单的方法,只需查询 Sidekiq/Redis 并查看失败作业的参数和错误是什么。
我也访问了这个链接:Get error message out of Sidekiq job
这是我正在使用的示例作业
class ClassificationJob < ActiveJob::Base
queue_as :default
def perform(entity)
entity.preprocess!
entity.classify!
end
end
我试着修改成这个
class ClassificationJob < ActiveJob::Base
queue_as :default
def perform(entity)
entity.preprocess!
entity.classify!
store entity_id: entity.id.to_s
entity_id = retrieve :entity_id
end
end
但它吐出以下错误:
ArgumentError: You cannot include Sidekiq::Worker in an ActiveJob: ClassificationJob
谢谢,
雅尼克
最佳答案
您正在寻找重试。 “重试”是 Sidekiq 的术语,用于表示已失败并将在 future 某个时间重试的作业。
Web UI 使用 API wiki 页面上记录的 Sidekiq API 来列出重试选项卡上的重试:
https://github.com/mperham/sidekiq/wiki/API#retries
retries = Sidekiq::RetrySet.new
retries.each do |job|
p [job.klass, job.args, job.jid]
end
关于ruby-on-rails - 使用参数查找失败的 Sidekiq 作业列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33576200/