gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:38:43 24 4
gpt4 key购买 nike

我试图查看 Laravel 队列是否正常工作,但遇到了一些问题。

所以我添加了一个testJob

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

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

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

对于最后添加的主管 worker

[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

之前是在supervisor中运行8个进程,所以我改成1,也遇到了同样的问题。

停止我在 MySQL 作业队列中看到的 worker 看起来是正确的,每分钟添加一个作业。

所以它看起来像是 worker 中的冲突。

这样对吗?我做错了什么吗?

Laravel 任务调度器是否已准备好用于具有数千个作业的生产环境?

最佳答案

尝试..

php artisan queue:work --tries=1

关于laravel队列作业多次运行同一个作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58854961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com