1

我正在使用 Iron IO 的推送队列和 Laravel 4.1 来排队需要很长时间(4-5 分钟)才能运行的作业。我的问题是 Iron IO 在作业完成运行之前重试作业(即作业需要很长时间才能运行,以至于 Iron IO 认为它已经失败并重试)。

尝试的解决方案:

  1. Iron IO 在其推送队列中设置了何时重试作业。我将其设置为 1 次重试(允许的最小值),重试等待时间为 500 秒(这对于完成作业来说已经足够了)。但是,Iron 坚持在 60 秒(默认重试时间)后重试作业,忽略其当前的 500 秒设置。

  2. 我尝试在我的工作人员中使用 $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 分钟,但如果它从不重试,我会很高兴。

4

0 回答 0