我需要覆盖Delayed::Worker.max_attempts
一项特定的工作,我想重试很多次。另外,我不希望以指数方式确定下一个预定时间(来自文档:5 seconds + N ** 4,其中 N 是重试次数)。
我不想覆盖Delayed::Worker
设置,并影响其他工作。
我的工作已经是一个自定义工作(我以某种方式处理错误),所以这可能会有所帮助。有关如何执行此操作的任何指示?
我需要覆盖Delayed::Worker.max_attempts
一项特定的工作,我想重试很多次。另外,我不希望以指数方式确定下一个预定时间(来自文档:5 seconds + N ** 4,其中 N 是重试次数)。
我不想覆盖Delayed::Worker
设置,并影响其他工作。
我的工作已经是一个自定义工作(我以某种方式处理错误),所以这可能会有所帮助。有关如何执行此操作的任何指示?
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
然后在需要的地方使用 运行它enqueue
,如下所示:
Delayed::Job.enqueue( MyCustomJob.new( param1, param2 ) )
希望这对将来的某人有所帮助。