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



我在我的初始化器中有这个:

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

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

可能发生了什么?

更多信息

以下是我观察到的:填充了"last error"字段并且"attempts"次数大于1(10+)的作业。

我发现我读的是旧的/错误的wiki。正确的设置方法是

Delayed::Worker.max_attempts = 1

检查您的dbms表"delayed_jobs",查看作业"失败"后仍然存在的记录(作业)。如果记录仍然存在,作业将重新运行。—如果显示"尝试次数"不为零,那么你就知道你的常数设置不正确。

另一种猜测是,由于某种原因,作业的"失败"没有被DelayedJob捕获。——在这种情况下,"尝试次数"仍然是0。

通过检查delayed_job/lib/delayed/job进行调试。rb文件。尤指自我。当您的一个作业"失败"时,使用Workoff方法

添加 @John,我不使用MAX_ATTEMPTS。要进行调试,请查看gem中使用它的地方。听起来问题在于工作是以正常的方式处理的,而不是将尝试限制为1。使用调试器或日志工具确保MAX_ATTEMPTS设置通过。

请记住 DelayedJobs作业运行程序不是一个完整的Rails程序。可能是你的初始化器设置没有运行。查看用于运行作业运行程序的脚本。

相关内容

最新更新