为什么我的delayed_job工作重新运行,即使我告诉他们不要?

时间:2011-09-20 15:53:51

标签: ruby delayed-job

我在初始化程序中有这个:

Delayed::Job.const_set( "MAX_ATTEMPTS", 1 )

但是,我的工作在失败后仍然重新运行,似乎完全忽略了这个设置。

可能会发生什么?

更多信息

以下是我正在观察的内容:填充“最后错误”字段且“尝试”次数超过1(10 +)的作业。

2 个答案:

答案 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的脚本。