我在初始化程序中有这个:
Delayed::Job.const_set( "MAX_ATTEMPTS", 1 )
但是,我的工作在失败后仍然重新运行,似乎完全忽略了这个设置。
可能会发生什么?
更多信息
以下是我正在观察的内容:填充“最后错误”字段且“尝试”次数超过1(10 +)的作业。
答案 0 :(得分:3)
我发现我正在读旧/错的维基。设置它的正确方法是
Delayed::Worker.max_attempts = 1
答案 1 :(得分:1)
检查dbms表“delayed_jobs”以查找作业“失败”后仍然存在的记录(作业)。如果记录仍然存在,则将重新运行该作业。 - 如果它显示“尝试”不为零,则表示您的常量设置无法正常工作。
另一个猜测是,由于某种原因,工作的“失败”并未被DelayedJob捕获。 - 在这种情况下,“尝试”仍然是0。
通过检查delayed_job / lib / delayed / job.rb文件进行调试。当你的一个工作“失败”时,esp the self.workoff方法
已添加 @John,我不使用MAX_ATTEMPTS。要进行调试,请查看gem以查看它的使用位置。听起来问题是正在以正常方式处理作业而不是限制尝试1.使用调试器或日志记录stmt来确保您的MAX_ATTEMPTS设置正在通过。
记住,DelayedJobs作业运行器不是一个完整的Rails程序。因此可能是您的初始化程序设置未运行。查看您用于运行jobs runner的脚本。