Beanstalkd 作业切换到 "ready" 状态
Beanstalkd job switching to "ready" state
我正在 运行使用 Laravel 和 Beanstalkd 队列驱动程序。我有一些很长的 运行ning 作业,我遇到一个问题,大约 60 秒后作业将从保留状态返回到就绪状态。该作业仍在 运行ning 中并且可以顺利完成。问题是,如果添加了另一个作业,下一个作业将不会 运行,而是已经移回就绪状态的前一个作业将 运行。如果作业在添加另一个作业之前完成,这不是问题。
这是我的代码。
队列推送:
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 分钟。
我终于找到了导致这个问题的原因!
https://github.com/laravel/framework/issues/3480
这是在 laravel 4.1 中添加的 我不知道它存在。您必须更改队列配置中的默认 ttr。希望这对其他人有帮助!
我正在 运行使用 Laravel 和 Beanstalkd 队列驱动程序。我有一些很长的 运行ning 作业,我遇到一个问题,大约 60 秒后作业将从保留状态返回到就绪状态。该作业仍在 运行ning 中并且可以顺利完成。问题是,如果添加了另一个作业,下一个作业将不会 运行,而是已经移回就绪状态的前一个作业将 运行。如果作业在添加另一个作业之前完成,这不是问题。
这是我的代码。
队列推送:
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 分钟。
我终于找到了导致这个问题的原因!
https://github.com/laravel/framework/issues/3480
这是在 laravel 4.1 中添加的 我不知道它存在。您必须更改队列配置中的默认 ttr。希望这对其他人有帮助!