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。希望这对其他人有帮助!