【问题标题】:Sidekiq jobs not going to the dead set, even with retry settings set to 0即使重试设置设置为 0,Sidekiq 作业也不会死机
【发布时间】:2023-03-04 14:45:01
【问题描述】:

根据https://github.com/mperham/sidekiq/wiki/Error-Handling#dead-job-queue,您可以简单地将以下内容添加到您的工作人员中,当工作失败时它将进入死角:

sidekiq_options retry: 0

但是,就我而言,这似乎不起作用。我指定了这个值,并专门放入了一个会导致worker失败的语句,即

class EmailNotificationWorker
  include Sidekiq::Worker
  sidekiq_options queue: Rails.env.to_sym, retry: 0
  require "securerandom"

  def perform(opts = {})
    puts hello
  end
end

作业按预期失败:

2021-01-22T17:53:05.057Z pid=11722 tid=gn9mxkn5e WARN: NameError: undefined local variable or method `hello' for #<EmailNotificationWorker:0x0000556bf59a5c48>
2021-01-22T17:53:05.057Z pid=11722 tid=gn9mxkn5e WARN: /myapp/app/workers/email_notification_worker.rb:9:in `perform'

但是,它只是转到 Sidekiq UI 中的“重试”部分:

我在这里缺少什么?尽管 sidekiq 选项设置为不重试并直接发送到死集,但重试计数已经达到 3。

在过去的几年里,我从未真正在 Sidekiq 中看到或听说过 DeadSet,也从未进入过该选项卡。我是否必须明确允许工作进入此处,还是应该自行发生?如果它应该自行发生,为什么工作会继续重新排队?

【问题讨论】:

    标签: sidekiq


    【解决方案1】:

    发现问题是由于调用EmailNotificationWorker.perform_async 的rails 控制台需要重新启动。我认为重新启动 sidekiq 可以解决问题,但没有。

    【讨论】:

      猜你喜欢
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 2023-03-10
      • 1970-01-01
      • 2016-05-30
      • 2022-09-28
      相关资源
      最近更新 更多