ruby-on-rails - 使用参数查找失败的 Sidekiq 作业列表

标签 ruby-on-rails sidekiq

我正在使用 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/

相关文章:

ruby-on-rails - ruby rails : undefined method 'digest' Rails Tutorial Section 10. 1.1

ruby-on-rails - 为什么在 Rails 中使用/app/lib 而不是/lib?

ruby-on-rails - heroku h10 应用程序崩溃 - 超时

ruby - 如何检测我的代码运行的是 "inside"Sidekiq 服务器还是 Puma?

ruby-on-rails - 当我增加 sidekiq 并发数时,它说我的池太小。但较小的数字也有效

ruby-on-rails - 如何在 Sidekiq 中查看 worker 的统计数据?

ruby-on-rails - 默认渲染 JSON 而不是 HTML?

mysql - 使用 Mysql 数据库的 Ruby on Rails 项目

ruby-on-rails - Rspec 应该等待线程完成

ruby-on-rails - 在 Rails 中执行 BDD/TDD 的最快方法?