Laravel作业和保留状态或保留队列

MKJ*_*MKJ 5 queue jobs redis supervisord laravel-4

当推送到队列中时,我有一个脚本作为作业运行。我还有其他几个队列,所有这些队列都由主管处理。我将Redis用作Laravel 4.2的队列驱动程序。

我想了解工作的不同状态:

  • 等待执行的作业
  • 失败的工作
  • 保留的工作

这些不同状态的问题在于,保留队列中有数千个作业queue:xyz:reserved(我不知道为什么)被推送到队列中,queue:xyz而这些作业(来自保留队列)阻止了新推送的作业的执行。

以下是由主管运行以处理作业的命令: php artisan queue:work --queue=xyz --tries=1 --daemon --env=prodEnv 我的问题是:

  • 为什么在保留的队列/状态中推送作业
  • 为什么Laravel将其推回原始队列?
  • 失败的作业和保留的作业有什么区别?要么
  • 何时将作业标记/认为是失败或保留?

将保留的作业推送到原始队列的过程减慢了队列中新作业的处理速度,我想通过处理这些保留的作业来使其更快。

Nav*_*eed 1

我遇到了同样的问题,并且最终能够解决它。

就我而言,这是因为运行时错误。

我的工作有 A、B、C 等代码段。C 部分每次都会导致运行时错误,虽然我可以按预期看到 A 部分和 B 部分的效果,但我注意到作业被推送到保留状态,并且没有观察到执行 C 部分的效果。

有趣的是,我运行了另一个作业,该作业在一段时间后修复了运行时错误,然后执行了 C 部分,并将该作业从保留作业中删除。

这可能无法直接回答您的所有问题,但我希望它有助于找到这些问题。