【问题标题】:Rails: Will sidekiq repeat this worker?Rails:sidekiq 会重复这个工人吗?
【发布时间】:2014-01-20 02:41:15
【问题描述】:

假设我有这个 sidekiq 工作者:

  def perform post_id
    post = Post.find post_id
    post.do_something
  end

如果找不到帖子并引发异常会怎样?

sidekiq 会再试一次吗?

如果不使用 sidekiq_options,sidekiq 不会再尝试更好的设计:retry => false

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby sidekiq


    【解决方案1】:

    如果您不想引发异常,请改用find_by_id,如果记录不存在,则返回nil,而不是引发异常。不过请务必检查nil

    def perform post_id
      post = Post.find_by_id post_id
      post.do_something if post
    end
    

    【讨论】:

    • 我通常rescue nil 很多发现只是为了安全。
    • 在 Rails 4 中,代码为 post = Post.find_by(id: post_id)
    猜你喜欢
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    相关资源
    最近更新 更多