【发布时间】:2014-05-20 17:26:50
【问题描述】:
有没有办法从作业任务本身内部确定正在运行的delayed_job 作业的状态?我有一项与可能非常不稳定的服务交互的作业,对于某类连接失败,我想重新排队该作业,并且仅在连接失败在重试限制时再次发生时引发异常。
用于演示我想要做什么的伪代码:
def do_thing
service.send_stuff(args)
rescue Exception1, Exception2
if job.retries == JOBS_MAX
raise
else
job.requeue
end
end
我不想在任何失败时引发异常,因为通常该工作会在以后重试时正常完成,而这只是在为我制造噪音。不过,我确实想知道它是否永远不会完成。
【问题讨论】:
-
失败后DJ不会自动重新排队吗?
-
是的,但我知道导致基于失败的重新排队的唯一方法是引发异常 - 我会收到通知。我只希望在最后一次重试时发生这种情况。
标签: ruby-on-rails ruby delayed-job