Ruby 为什么即使我告诉他们不要这样做,我的延迟工作仍在运行?

Ruby 为什么即使我告诉他们不要这样做,我的延迟工作仍在运行?,ruby,delayed-job,Ruby,Delayed Job,我的初始值设定项中有: Delayed::Job.const_set( "MAX_ATTEMPTS", 1 ) 然而,我的作业在失败后仍在重新运行,似乎完全忽略了此设置 可能发生了什么 更多信息 以下是我观察到的:填充了“last error”字段且“attempts”数超过1(10+)的作业。检查dbms表“delayed_jobs”,查找作业“失败”后仍存在的记录(作业)。如果记录仍然存在,作业将重新运行。-如果它显示“尝试次数”为非零,则您知道常量设置不正常 另一种猜测是,出于某种原因,

我的初始值设定项中有:

Delayed::Job.const_set( "MAX_ATTEMPTS", 1 )
然而,我的作业在失败后仍在重新运行,似乎完全忽略了此设置

可能发生了什么

更多信息

以下是我观察到的:填充了“last error”字段且“attempts”数超过1(10+)的作业。

检查dbms表“delayed_jobs”,查找作业“失败”后仍存在的记录(作业)。如果记录仍然存在,作业将重新运行。-如果它显示“尝试次数”为非零,则您知道常量设置不正常

另一种猜测是,出于某种原因,工作的“失败”并没有被延迟的工作抓住在这种情况下,“尝试次数”仍然为0

通过检查delayed_job/lib/delayed/job.rb文件进行调试。特别是当你的一项工作“失败”时,使用self.workoff方法

添加了@John,我不使用MAX\u尝试。要进行调试,请查看gem中使用它的位置。听起来问题在于作业是以正常方式处理的,而不是将尝试次数限制为1。使用调试器或日志stmt确保已通过MAX_尝试设置

请记住DelayedJobs运行程序不是完整的Rails程序。因此,可能是您的初始值设定项设置未运行。查看用于运行作业运行器的脚本。

检查dbms表“延迟的作业”,以查找作业“失败”后仍存在的记录(作业)。如果记录仍然存在,作业将重新运行。-如果它显示“尝试次数”为非零,则您知道常量设置不正常

另一种猜测是,出于某种原因,工作的“失败”并没有被延迟的工作抓住在这种情况下,“尝试次数”仍然为0

通过检查delayed_job/lib/delayed/job.rb文件进行调试。特别是当你的一项工作“失败”时,使用self.workoff方法

添加了@John,我不使用MAX\u尝试。要进行调试,请查看gem中使用它的位置。听起来问题在于作业是以正常方式处理的,而不是将尝试次数限制为1。使用调试器或日志stmt确保已通过MAX_尝试设置


请记住DelayedJobs运行程序不是完整的Rails程序。因此,可能是您的初始值设定项设置未运行。查看用于运行jobs runner的脚本。

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

Delayed::Worker.max_attempts = 1

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

Delayed::Worker.max_attempts = 1

我刚刚添加了更多信息。。。您是否熟悉“最大尝试次数”设置及其行为方式?感谢指向该文件的指针,我将查看它…FWIW,在初始值设定项中设置MAX_尝试次数,这是DJ docs/wiki推荐的方式。我刚刚添加了一些更多信息。。。您是否熟悉“最大尝试次数”设置及其行为方式?感谢指向该文件的指针,我将查看它…FWIW,在初始值设定项中设置MAX_尝试次数是DJ docs/wiki推荐的方式。