我正在使用 Iron IO 的推送队列和 Laravel 4.1 来排队需要很长时间(4-5 分钟)才能运行的作业。我的问题是 Iron IO 在作业完成运行之前重试作业(即作业需要很长时间才能运行,以至于 Iron IO 认为它已经失败并重试)。
尝试的解决方案:
Iron IO 在其推送队列中设置了何时重试作业。我将其设置为 1 次重试(允许的最小值),重试等待时间为 500 秒(这对于完成作业来说已经足够了)。但是,Iron 坚持在 60 秒(默认重试时间)后重试作业,忽略其当前的 500 秒设置。
我尝试在我的工作人员中使用 $job->delete() 和 $job->attempts() 向 Iron 发出工作已完成的信号,但两者都没有工作。我的工人代码如下。
class Worker { public function fire($job, $data) { if( $job->attempts() > 1 ) { $job->delete(); } else { // perform job that takes 4-5 minutes } } }
早些时候我只是
class Worker { public function fire($job, $data) { $job->delete(); // perform job that takes 4-5 minutes } }
但这也不起作用。
本质上,我希望 Iron IO 在重试工作之前等待 10 分钟,但如果它从不重试,我会很高兴。