laravel队列作业多次运行同一作业

时间:2019-11-14 10:47:11

标签: laravel

我正在尝试查看Laravel Queue,但是遇到了一些问题。

所以我添加了一个testJob

protected function schedule(Schedule $schedule)
{
    $schedule->job(new TestJob)->everyMinute();
}

工作类什么都不做,只是一个测试

class TestJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function __construct()
    {
        //
    }

    public function handle()
    {
        //
    }
}

正如文档所述,将cron添加到服务器中

* * * * * cd /home/ec2-user/myproject-prod && php artisan schedule:run >> /dev/null 2>&1

最后一次增加主管工作人员

[program:myproject-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /home/ec2-user/myproject-prod/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=ec2-user
numprocs=1
redirect_stderr=true
stdout_logfile=/home/ec2-user/supervisor-myproject-prod.log

因此,如下面的日志所示,您可以在同一秒内看到同一作业多次运行。

有时同一作业运行一次(正确),很多时候运行两次,几次运行4次。

[2019-11-14 08:25:02][5537] Processing: App\Jobs\TestJob
[2019-11-14 08:25:02][5537] Processed:  App\Jobs\TestJob
[2019-11-14 08:25:05][5538] Processing: App\Jobs\TestJob
[2019-11-14 08:25:05][5538] Processed:  App\Jobs\TestJob
[2019-11-14 08:26:03][5539] Processing: App\Jobs\TestJob
[2019-11-14 08:26:03][5539] Processed:  App\Jobs\TestJob
[2019-11-14 08:26:06][5540] Processing: App\Jobs\TestJob
[2019-11-14 08:26:06][5540] Processed:  App\Jobs\TestJob
[2019-11-14 08:27:03][5541] Processing: App\Jobs\TestJob
[2019-11-14 08:27:03][5541] Processed:  App\Jobs\TestJob
[2019-11-14 08:27:06][5542] Processing: App\Jobs\TestJob
[2019-11-14 08:27:06][5542] Processed:  App\Jobs\TestJob

是在主管中运行8个进程之前,所以我更改为1并遇到相同的问题。

我在MySQL作业队列中看到的停止工作的工人看起来很正确,每分钟增加一个作业。

这看起来像是工人冲突。

对吗?我在做错什么吗?

Laravel任务计划程序准备好用于成千上万的工作了吗?

1 个答案:

答案 0 :(得分:2)

尝试..

php artisan queue:work --tries=1