>我在队列中推送时有一个脚本作为作业运行。我还有其他几个队列,所有这些都由主管处理。我正在使用 Redis 作为 Laravel 4.2 的队列驱动程序。
我想知道工作的不同状态:
- 等待执行的作业
- 失败的作业
- 预留作业
这些不同状态的问题在于,我在保留队列queue:xyz:reserved
中有数千个作业(我不知道为什么),这些作业在队列queue:xyz
中推送,而这些作业(来自保留队列)阻止了新推送作业的执行。
以下是被监督者为处理作业而运行的命令:php artisan queue:work --queue=xyz --tries=1 --daemon --env=prodEnv
我的问题是:
- 为什么在保留队列/状态中推送作业
- 为什么会被拉拉维尔推回原来的队列?
- 失败作业和保留作业之间有什么区别?或
- 作业何时被标记为/视为失败或保留?
将保留作业推送到原始队列的过程会减慢队列中新作业的处理速度,我希望通过处理这些保留作业来使其更快。
我遇到了同样的问题,最终能够解决它。
就我而言,这是因为运行时错误。
我有一个作业,其中的代码部分说 A,B,C.C 部分每次都会导致运行时错误,虽然我可以按预期看到 A 和 B 部分的效果,但我注意到该作业被推送到保留状态,并且没有观察到执行部分 C 的效果。
有趣的是,我运行了另一个作业,该作业在一段时间后修复了运行时错误,然后执行了 C 部分,并且该作业从保留作业中删除。
这可能无法直接回答您的所有问题,但我希望它有助于找到它们。