【问题标题】:Rails 5 + ActiveJob + Sidekiq: Stop and log error after 10 retriesRails 5 + ActiveJob + Sidekiq:重试 10 次后停止并记录错误
【发布时间】:2020-11-13 07:07:58
【问题描述】:

尝试编写一个在 10 次重试后(所有异常类型)将报告失败并终止的作业。无法让它工作。也试过this answer 和this one。都没有奏效。 最好的解决方案是从perform 方法中访问retry_count

【问题讨论】:

    标签: ruby-on-rails sidekiq rails-activejob


    【解决方案1】:

    我认为您要的是sidekiq_retries_exhausted 钩子。一旦您的重试完成并且作业将移至死队列,它将被调用。只需将重试次数设置为 10 并实现该挂钩。

    config.death_handlers 也可能很有趣。

    在此处查看文档:https://github.com/mperham/sidekiq/wiki/Error-Handling#configuration

    【讨论】:

    • 这对 ActiveJob 有效吗?我不使用include Sidekiq::Worker
    • 在我看来,您需要的解决方案来自您已经查看过的同一线程,但您没有尝试使用 retry_on stackoverflow.com/a/48302041/4473406 的线程 (stackoverflow.com/a/48302041/4473406)。您可以 retry_on StandardError 捕获所有异常并传递一个在重试完成后将被调用的块。如果您希望作业最终进入死队列,则从块中重新引发错误并将重试设置为 false 在 sidekiq 级别。如果您希望我编辑我的答案,请告诉我。
    • retry_on StandardError 是个好主意!我会试一试。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 2015-08-20
    • 2015-11-24
    相关资源
    最近更新 更多