如何防止在 sidekiq 上重试某些 Exception/Error
How to prevent retrying for some Exception/Error on sidekiq
我有一个 sidekiq 工作人员会请求第 3 方 api(Mailchimp) 并得到一些回应。有时它会响应一条错误消息,api gem 会引发错误。
但是,这些错误都是正常的,不需要重试。所以我希望 Sidekiq 在出现这些错误时阻止重试。
我尝试了一个简单的 rescue
,但它不会阻止 sidekiq 捕获引发的错误。
def preform(id)
UpdateMailchimpService.new.(id)
rescue
Mailchimp::ListInvalidBounceMemberError
end
有什么办法吗?谢谢
更新
终于发现我的问题是因为我们的部署工具坏了(部署失败但没有实现)。实际上,Sidekiq 会忽略任何获救的 error/exception 并且不会重试并报告给 Bugsnag。
在Bugsnag's documentation中明确表示:
Bugsnag should be installed and configured, and any unhandled exceptions will be automatically detected and should appear in your Bugsnag dashboard.
这个github上的post没有明确的解释所以这就是我对这个问题感到困惑的原因。
使用retry: false
advanced option:
class UpdateMailchimpWorker
include Sidekiq::Worker
sidekiq_options retry: false # ⇐ HERE
def perform(id)
UpdateMailchimpService.new.(id)
end
end
您的assumption/example不正确。做正常的 Ruby 事情:拯救错误并忽略它。
def perform(id)
begin
UpdateMailchimpService.new.(id)
rescue NormalError
# job will succeed normally and Sidekiq won't retry it.
end
end
我有一个 sidekiq 工作人员会请求第 3 方 api(Mailchimp) 并得到一些回应。有时它会响应一条错误消息,api gem 会引发错误。
但是,这些错误都是正常的,不需要重试。所以我希望 Sidekiq 在出现这些错误时阻止重试。
我尝试了一个简单的 rescue
,但它不会阻止 sidekiq 捕获引发的错误。
def preform(id)
UpdateMailchimpService.new.(id)
rescue
Mailchimp::ListInvalidBounceMemberError
end
有什么办法吗?谢谢
更新
终于发现我的问题是因为我们的部署工具坏了(部署失败但没有实现)。实际上,Sidekiq 会忽略任何获救的 error/exception 并且不会重试并报告给 Bugsnag。
在Bugsnag's documentation中明确表示:
Bugsnag should be installed and configured, and any unhandled exceptions will be automatically detected and should appear in your Bugsnag dashboard.
这个github上的post没有明确的解释所以这就是我对这个问题感到困惑的原因。
使用retry: false
advanced option:
class UpdateMailchimpWorker
include Sidekiq::Worker
sidekiq_options retry: false # ⇐ HERE
def perform(id)
UpdateMailchimpService.new.(id)
end
end
您的assumption/example不正确。做正常的 Ruby 事情:拯救错误并忽略它。
def perform(id)
begin
UpdateMailchimpService.new.(id)
rescue NormalError
# job will succeed normally and Sidekiq won't retry it.
end
end