【问题标题】:How to put a job to Dead using Sidekiq?如何使用 Sidekiq 将工作放入 Dead?
【发布时间】:2021-12-17 14:51:31
【问题描述】:

是否有可能在捕获作业中的错误时使该作业陷入死机?

类似:

class MyJob < ApplicationJob
  queue_as :default
  sidekiq_options retry: 5

  rescue_from MyError do
    # This is where I have to put the job in dead.
  end

  def perform(document)
    ...
  end
end

【问题讨论】:

  • 如果您的意图只是阻止作业重试......为什么不直接返回 true 并允许将其标记为完成?
  • @Jon 对于这些错误,我需要将作业置于死状态,以便可以在那里对其进行跟踪。我还需要通知支持人员所有已死亡的工作。
  • 那么我建议使用 sentry.io 之类的东西来执行此操作,而不是手动监视死队列。您可以配置death_handlers 为您处理此问题。

标签: ruby-on-rails ruby sidekiq


【解决方案1】:

根据this question ...您不能在您的工作中动态地执行此操作。您最好的选择是将重试次数设置为零。

documentation ...跳过重试,将失败的作业直接发送到死集:

class NonRetryableWorker
  include Sidekiq::Worker
  sidekiq_options retry: 0

  def perform(...)
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 2021-10-31
    • 1970-01-01
    • 2015-12-07
    • 2015-01-03
    • 2017-11-16
    • 2015-06-11
    相关资源
    最近更新 更多