【发布时间】:2013-10-30 12:43:31
【问题描述】:
我希望 Airbrake 仅在重试用尽时才收到错误通知,但我似乎想不出实现它的方法...
我可以添加一个 sidekiq_retries_exhausted 钩子来将错误发送到 AirBrake,但我能想到捕捉实际失败的唯一方法是添加一个吞下错误的中间件,但是如果存在,该作业将被标记为成功没有错误...那么永远不会有任何重试..
希望这是有道理的!
【问题讨论】:
-
您可以挽救并提出您自己的作业错误异常(管理您认为合适的原始错误),然后将该自定义作业错误异常添加到 aibrake 忽略列表中。如果我误解了您的问题,我们深表歉意。
-
你理解正确,但我宁愿错误根本没有出现在 Airbrake...
-
澄清一下,我的意思是,你将
perform代码包装在一个开始/救援块中,然后记录出现的任何可能导致重试的错误,而是引发一个通用的WorkerPerformError之类的异常并将其添加到您忽略的异常列表中。这样,原始异常被抑制,自定义异常触发重试。我将不得不在我最近继承的一个项目中实现类似的东西,所以当我有的时候我会发布一个更深思熟虑的解决方案。 -
刚刚找到这个可能有帮助的帖子:librelist.com/browser//sidekiq/2012/12/8/…
标签: ruby-on-rails ruby-on-rails-4 sidekiq airbrake