Laravel 排队的作业在失败时不会重试
Laravel queued jobs are not retrying when they fail
问题
我正在分派一个作业来执行一个动作,该动作需要准备好资源才能正确执行,因此如果失败,则需要在一段时间后重试。
但真正发生的是,如果它失败了,它就不会再执行了。
我正在使用 Supervisor 来管理队列和数据库驱动程序,并且我在默认 queue.php 配置文件中没有进行任何更改。
使用Laravel 5.8。
我试过的
我已经尝试过在作业中手动设置尝试次数 class 喜欢
public $tries = 5;
重试延迟也是一样
public $retryAfter = 60;
我的代码
我正在根据使用 make:job 创建的默认作业模板执行此作业,我的构造函数和处理方法如下所示:
public function __construct($event, $data)
{
$this->event = $event;
$this->data = $data;
}
public function handle()
{
Log::info('Job started | ' . $this->event . ' | Attempt: ' . $this->attempts());
// Executes some logic and throws an Exception if it fails
Log::info('Job succeeded | ' . $this->event);
}
最后它没有到达“作业成功”日志,也没有记录除 1 以外的任何其他尝试。
我是否遗漏了一些概念,或者这段代码有什么问题?
其实这是一个非常愚蠢的问题。但是,如果有人像我一样愚蠢,我会把解决方案放在这里。
在我的 queue.php 中,默认驱动程序设置为 sync,这导致程序仅 运行作业处理方法,但它不会将其排队,因为正如我所说我没有改变任何东西。所以我只是将它设置为 database 并且它是固定的。
问题
我正在分派一个作业来执行一个动作,该动作需要准备好资源才能正确执行,因此如果失败,则需要在一段时间后重试。 但真正发生的是,如果它失败了,它就不会再执行了。 我正在使用 Supervisor 来管理队列和数据库驱动程序,并且我在默认 queue.php 配置文件中没有进行任何更改。
使用Laravel 5.8。
我试过的
我已经尝试过在作业中手动设置尝试次数 class 喜欢
public $tries = 5;
重试延迟也是一样
public $retryAfter = 60;
我的代码
我正在根据使用 make:job 创建的默认作业模板执行此作业,我的构造函数和处理方法如下所示:
public function __construct($event, $data)
{
$this->event = $event;
$this->data = $data;
}
public function handle()
{
Log::info('Job started | ' . $this->event . ' | Attempt: ' . $this->attempts());
// Executes some logic and throws an Exception if it fails
Log::info('Job succeeded | ' . $this->event);
}
最后它没有到达“作业成功”日志,也没有记录除 1 以外的任何其他尝试。
我是否遗漏了一些概念,或者这段代码有什么问题?
其实这是一个非常愚蠢的问题。但是,如果有人像我一样愚蠢,我会把解决方案放在这里。
在我的 queue.php 中,默认驱动程序设置为 sync,这导致程序仅 运行作业处理方法,但它不会将其排队,因为正如我所说我没有改变任何东西。所以我只是将它设置为 database 并且它是固定的。