我正在使用Sidekiq进行Rails APP的作业管理.我想知道你如何获得失败的工作(Ids,对象,错误消息等)的参数?在WebUI上,你得到的只是失败的工作nr.如果我理解正确,默认是将给定作业失败的所有时间加起来.我已经部署了我的应用程序,它正在几个工作人员上运行.很难找到每一个工人并试图找出答案,特别是当你有一个很久以前的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对于失败的工作的期限,并将在未来的某个时间重试.
Web UI使用API Wiki页面上记录的Sidekiq API列出Retries选项卡上的重试:
https://github.com/mperham/sidekiq/wiki/API#retries
retries = Sidekiq::RetrySet.new retries.each do |job| p [job.klass,job.args,job.jid] end