Ruby on rails 使用延迟作业时,我想根据错误消息修改重新调度
在回调时使用错误、失败和重新安排时,是否有办法使重新安排取决于我收到的错误类型Ruby on rails 使用延迟作业时,我想根据错误消息修改重新调度,ruby-on-rails,ruby,delayed-job,Ruby On Rails,Ruby,Delayed Job,在回调时使用错误、失败和重新安排时,是否有办法使重新安排取决于我收到的错误类型 我已经设置了reschedule_at方法,但if会影响此类型的所有作业。我不知道如何根据错误类型和处理程序处理此行为。经过一些测试后,您似乎可以使用以下方法根据特定作业错误消息进行自定义重新安排: 在作业中定义实例变量以保存自定义重试延迟。此变量将在所有其他变量中序列化到数据库(或任何其他DelayedJob后端),即在作业运行之间保留其状态 在错误钩子中,根据异常参数中得到的错误(这是一个异常对象),将延迟设置为
我已经设置了reschedule_at方法,但if会影响此类型的所有作业。我不知道如何根据错误类型和处理程序处理此行为。经过一些测试后,您似乎可以使用以下方法根据特定作业错误消息进行自定义重新安排:
错误
钩子中,根据异常
参数中得到的错误(这是一个异常
对象),将延迟设置为任何值在
方法上重新调度的事实。请参见以下示例:
class MyJob
attr_accessor :retry_delay
def initialize
self.retry_delay = 5 # default retry delay
end
def error(job, exception)
# set up a different the delay time on a specific error
if exception.is_a? NameError
self.retry_delay = 10
end
end
def reschedule_at(current_time, attempts)
current_time + retry_delay.seconds
end
end