【问题标题】:Sidekiq/Rails: How to catch exception AND retrySidekiq/Rails:如何捕获异常并重试
【发布时间】:2020-06-17 20:44:35
【问题描述】:

我有运行 Selenium 的 sidekiq 作业。如果工作崩溃,我需要

  1. 捕获异常以关闭 selenium 驱动程序(否则所有即将到来的作业也会崩溃),
  2. 通知错误处理程序(Sentry)
  3. 让 sidekiq 再试一次

今天我可以捕捉并通知,但通过捕捉异常 Sidekiq 不会重试工作。

我的问题与this one 类似,但a)它没有得到答案,b)用户不想通知其错误处理服务。

即使我发现异常,如何让 Sidekiq 重试作业?

【问题讨论】:

    标签: ruby-on-rails sidekiq


    【解决方案1】:

    如何重新引发异常?应该是这样的:

    def perform
      # perform_code
    rescue ErrorClass => error
      # handle error
      raise error
    end
    

    这样,sidekiq 会重复这个任务(因为它会引发错误),但处理代码也会被执行。

    【讨论】:

    • 在这种情况下,我会在哨兵上两次收到相同的错误,对吗?如果我自己提出错误,我还能将额外的数据传递给哨兵吗?我通常在错误处理上这样做。
    猜你喜欢
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多