首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sidekiq/Airbrake仅在重试失败时出现post异常

Sidekiq/Airbrake仅在重试失败时出现post异常
EN

Stack Overflow用户
提问于 2013-10-30 20:43:32
回答 4查看 3.1K关注 0票数 5

我希望Airbrake只在重试耗尽时才能收到错误通知,但我似乎想不出实现它的方法……

我可以添加一个sidekiq_retries_exhausted钩子来将错误发送到AirBrake,但我认为捕获实际故障的唯一方法是添加一个接受错误的中间件,但是如果没有错误,作业将被标记为成功……那么将永远不会有任何重试..

希望这是有意义的!

EN

回答 4

Stack Overflow用户

发布于 2013-10-30 23:39:43

我设法用一个插入在列表开头的Sidekiq中间件实现了这一点:

代码语言:javascript
复制
class RaiseOnRetriesExtinguishedMiddleware
    include Sidekiq::Util

  def call(worker, msg, queue)
    yield
  rescue Exception => e
    bubble_exception(msg, e)
  end

  private

  def bubble_exception(msg, e)
    max_retries = msg['retries'] || Sidekiq::Middleware::Server::RetryJobs::DEFAULT_MAX_RETRY_ATTEMPTS
    retry_count = msg['retry_count'] || 0
    last_try = !msg['retry'] || retry_count == max_retries - 1

    raise e if last_try
  end

  def retry_middleware
    @retry_middleware ||= Sidekiq::Middleware::Server::RetryJobs.new
  end
end

如果这是最后一次尝试,抛出一个异常,它会让它冒泡(到空气制动),否则它不会。这不会影响失败记录,因为它发生在链的后面。

票数 4
EN

Stack Overflow用户

发布于 2013-10-30 22:27:17

here所示(不是我的代码):

代码语言:javascript
复制
    Airbrake.configure do |config|
      config.api_key = '...'
      config.ignore_by_filter do |exception_data|
        exception_data[:parameters] && 
        exception_data[:parameters]['retry_count'].to_i > 0
      end
    end
票数 3
EN

Stack Overflow用户

发布于 2015-08-26 02:53:24

我遇到了完全相同的事情,并想把它放在AirBrake之外。下面是我所做的,简单易懂:

代码语言:javascript
复制
class TaskWorker
  include Sidekiq::Worker

  class RetryLaterNotAnError < RuntimeError
  end

  def perform task_id
    task = Task.find(task_id)
    task.do_cool_stuff

    if task.finished?
      @log.debug "Nothing to do for task #{task_id}"
      return false
    else
      raise RetryLaterNotAnError, task_id
    end
  end
end

然后,为了让Airbrake忽略它:

代码语言:javascript
复制
Airbrake.configure do |config|
  config.ignore << 'RetryLaterNotAnError'
end

瞧!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19682594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档