我需要为一个特定的作业覆盖Delayed::Worker.max_attempts
,我想重试很多次。另外,我不希望下一个预定时间以指数方式确定(从文档:5秒+ N ** 4,其中N是重试次数)。
我不想覆盖Delayed::Worker
设置,并影响其他工作。
我的工作已经是一项自定义工作(我以某种方式处理错误),所以这可能会有所帮助。有关如何做到这一点的任何指示?
答案 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
希望这有助于将来。