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

时间:2017-04-06 03:44:59

标签: laravel-4 redis queue jobs supervisord

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

我想知道这些工作的不同状态:

  • 等待执行的工作
  • 失败的工作
  • 预约作业

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

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

  • 为什么将作业推入预留队列/状态
  • 为什么Laravel会把它推回原来的队列?
  • 失败和保留工作有什么区别?或者
  • 什么时候标记/被视为失败或保留?

将预留作业推送到原始队列的过程会减慢队列中新作业的处理速度,我希望通过处理这些预留作业来加快处理速度。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,最终能够解决这个问题。

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

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

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

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