作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
使用错误、失败和 reschedule_at 回调有没有办法让 reschedule_at 时间取决于我收到的错误类型?
我已经设置了 reschedule_at 方法,但如果影响所有此类作业。我不知道根据错误类型和处理程序在何处处理此行为。
最佳答案
经过一些测试,您似乎可以使用以下方法根据特定作业错误消息进行自定义重新安排:
在作业中定义一个实例变量来保存自定义重试延迟。此变量将序列化到数据库(或任何其他 DelayedJob 后端)以及所有其他变量,即它的状态将在作业运行之间保留。
在 error
Hook 中,根据您将在 exception
参数中获得的错误将延迟设置为任意值(这是一个 Exception
对象)。
在 reschedule_at
方法中使用该自定义延迟。
该解决方案利用了 reschedule_at
方法 is called after the error
hook 的事实.请参阅以下示例:
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
关于ruby-on-rails - 使用延迟作业我想根据错误消息修改 reschedule_at,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36842437/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!