问题描述
我有一个Laravel Horizon主管配置,可以维护一个进程。但是,我无法让此过程一次只运行一项工作。的配置
'long-running-supervisor' => [
'connection' => 'redis-long-running','queue' => ['default_long'],'balance' => 'simple','processes' => 1,'tries' => 1,'timeout' => 720
],
但是,这个default_long进程同时重叠了多个作业,而不是等待一个作业完成才开始另一个作业。
Horizon输出(为简洁起见进行了编辑)
WaistPredictionJob 8039
Queue: default_long | Tags: App\Prediction:620 2020-10-17 19:49:45 29.20s
WaistPredictionJob 8049
Queue: default_long | Tags: App\Prediction:621 2020-10-17 19:50:11 29.08s
PredictionCompleted 8051
Queue: default | Tags: App\Prediction:620 2020-10-17 19:50:16 0.03s
WaistPredictionJob 8054
Queue: default_long | Tags: App\Prediction:622 2020-10-17 19:50:17 25.77s
PredictionCompleted 8064
Queue: default | Tags: App\Prediction:621 2020-10-17 19:50:46 0.16s
PredictionCompleted 8074
Queue: default | Tags: App\Prediction:622 2020-10-17 19:51:11 0.03s
解决方法
我知道了。
我错误地认为时间戳记是作业完成的时间,而实际上它们代表了作业何时排队。
如果查看PredictionCompleted
作业的时间戳,您会注意到WaistPrediciton
作业实际上是一个接一个地运行。