我有一个运行多种作业的系统(Laravel 5.1队列)。我用数据库队列驱动程序。
主管确保3'实例' queue:work
的任务一直作为守护进程运行。
ps aux | grep queue
证实了这一点 - 三个进程正在等待工作。
有时我可以在数据库表中看到多个作业(没有延迟)记录,但总是只有其中一个将reserved
标志设置为1。
我做错了什么?
为什么3个守护进程工人没有处理队列中的其他工作?
如何确保可以同时完成多项工作?
更新
我写了一份睡眠时间为15秒的作业然后发送了三份新工作(同一课程)。
我在我的开发服务器上运行它并且它有效。同时保留了三份工作。一旦处理了其中一个 - 另一个从队列中取出并保留。人们期望的行为。
最后,我在生产服务器上运行了同样的情况,但是没有用。即使环境相似,一次保留一个工作,三个队列:工作流程等。
然后我请求supervisord重启工人,它也开始工作了。
所以:它确实以这种方式工作。问题是我不知道可能导致我遇到的问题是什么以及什么时候发生?我该如何避免这种情况,如何知道它现在好不了?