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