我正在使用Laravel和Beanstalkd队列驱动程序一起运行。我有一些长期工作,我遇到一个问题,大约60秒左右后,工作将从保留状态恢复到就绪状态。该作业仍在运行并且完成没有问题。问题是,如果添加了另一个作业,则不会再次运行,而是先前已经恢复准备的作业将运行。如果作业在添加另一个作业之前完成,则不是问题。
这是我的代码。
队列推送:
Queue::push('myApp\Processors\BuildQuick', $job);
工作代码:
public function fire($job, $data) {
try {
//some code here that calls another class to build an amazon ec2
} catch (\Exception $ex) {
\Logging::joblog($ex->getMessage(), "ERROR");
$job->delete();
return;
}
}
$job->delete();
\Logging::joblog("Job Completed Successfully", "INFO");
}
更新: 我用睡眠计时器对它进行了测试,每次只发生1分钟。我知道它不会抛出任何异常,我的所有代码都会睡2分钟。
答案 0 :(得分:1)
我终于找到了造成这个问题的原因!
https://github.com/laravel/framework/issues/3480
这是在laravel 4.1中添加的我没有知道这个存在。您必须更改队列配置中的默认ttr。希望这有助于其他人!