我创建了一个Laravel作业,尝试了3次,并在10分钟后超时。
我可以使用方法failed
处理3次尝试后的失败,但是如何处理此作业每3次尝试的超时事件?
用于记录和反馈,我希望在第一次或第二次尝试失败时通知用户,并在以后重试。
class MyJob implements ShouldQueue
{
public $tries = 3;
public $timeout = 600;
// [...]
public function failed(Throwable $exception)
{
// The failure of the 3 tries.
}
// Any method for catching each timeouts ?
}
2条答案
按热度按时间zwghvu4y1#
您可以在作业类上定义$failOnTimeout属性
https://laravel.com/docs/9.x/queues#failing-on-timeout
iyfamqjs2#
我认为没有办法做到这一点,
但是您可以执行一些操作,例如捕获作业失败时抛出的错误,并验证它是否来自超时异常,我认为该异常将抛出异常处理程序
Symfony\Component\Process\Exception\ProcessTimedOutException
。比如说;
只需尝试运行一个作业并确保它由于超时而失败,以验证实际的超时类异常