ruby-on-rails - 如何在不引发错误的情况下将 sidekiq 任务/作业标记为重试?

标签 ruby-on-rails sidekiq

我使用 Sidekiq 队列来处理与不可靠的 3rd 方 API 的通信。由于此 API 通常一次关闭几分钟然后再次备份,因此 Sidekiq 非常方便。当发生连接问题时,会引发错误,Sidekiq 会将作业扔回队列中,以便稍后在一段时间后再次重试。

我使用 NewRelic 不仅可以帮助调试崩溃,还可以用于监控。我的问题是上述当前的方法会在 NewRelic 中产生错误。如果第 3 方 API 关闭超过几分钟,错误计数会累积到足以导致通过 NewRelic 发送通知。

我想要做的只是在某项工作发生一定次数的重试时才从我的工作人员那里引发错误。我正在使用 sidekiq_retries_exhausted去做这个。我的问题是,我不太确定如何在出现错误后将作业放回队列而不引发错误。

Sidekiq 是否提供任何设施来将作业返回到队列,增加作业的重试次数,并让它坐在那里直到它再次运行,就好像在工作类中引发了异常一样?

最佳答案

您提出特定错误并告诉错误服务忽略该类型的错误。对于 NewRelic:

https://docs.newrelic.com/docs/agents/ruby-agent/installation-configuration/ruby-agent-configuration#error_collector.ignore_errors

关于ruby-on-rails - 如何在不引发错误的情况下将 sidekiq 任务/作业标记为重试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35711734/

相关文章:

ruby-on-rails - 帖子评级 - Rails

javascript - 如何配置 Rails 3.2+/4 以默认生成 .js 而不是 .js.coffee?

ruby-on-rails - Rails 5.1 API + ActiveAdmin + Sidekiq

ruby-on-rails - 如何在 sidekiq 中切换 Redis 主机/池?

ruby-on-rails - 设置 Sidekiq :concurrency on Heroku

mysql - 验证同一个表中引用同一个表的两个外键

ruby-on-rails - cucumber 和间隙 : current_user in steps

ruby-on-rails - Rails 4.1 Postgres 字符串数组 : Can't Save After Modifying

ruby-on-rails - Sidekiq 不断重启 Cloud66

ruby - 如何检测我的代码运行的是 "inside"Sidekiq 服务器还是 Puma?