【发布时间】: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