延迟作业:为特定作业配置run_at和max_attempts

时间:2013-04-26 00:32:13

标签: ruby-on-rails delayed-job

我需要为一个特定的作业覆盖Delayed::Worker.max_attempts,我想重试很多次。另外,我不希望下一个预定时间以指数方式确定(从文档:5秒+ N ** 4,其中N是重试次数)。

我不想覆盖Delayed::Worker设置,并影响其他工作。

我的工作已经是一项自定义工作(我以某种方式处理错误),所以这可能会有所帮助。有关如何做到这一点的任何指示?

1 个答案:

答案 0 :(得分:15)

我通过查看delayed_job源代码来解决这个问题。这在他们的文档中没有记录。

这就是我的所作所为:

class MyCustomJob < Struct.new(:param1, :param2)
  def perform
    # do something
  end

  # attempts and time params are required by delayed_job
  def reschedule_at(time, attempts)
    30.seconds.from_now
  end

  def max_attempts
    50
  end
end

希望这有助于将来。