如何防止队列作业失败后继续执行?
How To Prevent Queued Job From Executing After Failure?
我已将我的主管工作人员配置为在失败的情况下尝试 laravel 排队作业 3 次。以下是我的工作人员配置示例。
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php home/vagrant/Code/lead_reactor/artisan queue:work database --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=vagrant
numprocs=8
redirect_stderr=true
stdout_logfile=home/vagrant/Code/lead_reactor/storage/logs/laravel-worker.log
但我确实有一个特定的 laravel 作业队列,无论是否出现故障或 none,我都希望它只执行一次。如果在不更改我的工作人员配置的情况下失败,我想阻止未来的作业执行尝试。
下面是我的工作结构class。
class SendBugReports extends Job implements SelfHandling, ShouldQueue
{
use InteractsWithQueue, SerializesModels;
protected $bugReports;
/**
* Create a new job instance.
*
*/
public function __construct()
{
$this->bugReports = BugReport::all();
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
//job processes...
}
}
任何帮助将不胜感激! :)
您可以使用 attempts 方法检查 运行 作业的尝试次数:
public function handle()
{
if ($this->attempts() > 1) {
return;
}
}
我已将我的主管工作人员配置为在失败的情况下尝试 laravel 排队作业 3 次。以下是我的工作人员配置示例。
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php home/vagrant/Code/lead_reactor/artisan queue:work database --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=vagrant
numprocs=8
redirect_stderr=true
stdout_logfile=home/vagrant/Code/lead_reactor/storage/logs/laravel-worker.log
但我确实有一个特定的 laravel 作业队列,无论是否出现故障或 none,我都希望它只执行一次。如果在不更改我的工作人员配置的情况下失败,我想阻止未来的作业执行尝试。
下面是我的工作结构class。
class SendBugReports extends Job implements SelfHandling, ShouldQueue
{
use InteractsWithQueue, SerializesModels;
protected $bugReports;
/**
* Create a new job instance.
*
*/
public function __construct()
{
$this->bugReports = BugReport::all();
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
//job processes...
}
}
任何帮助将不胜感激! :)
您可以使用 attempts 方法检查 运行 作业的尝试次数:
public function handle()
{
if ($this->attempts() > 1) {
return;
}
}