laravel队列配置任务最大重试次数,单任务最大执行时间

laravel队列配置任务最大重试次数,单任务最大执行时间

一、总结

一句话总结:

在使用laravel队列的时候,假如没有任何配置,那么【队列将会一直执行,直至成功为止】,但是这不是我们想要的,这样会【导致错误日志无限增长】,然后爆炸
class SendEmailCode implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    /**
     * 任务最大尝试次数。
     *
     * @var int
     */
    public $tries = 3;
    /**
     * 任务运行的超时时间。
     *
     * @var int
     */
    public $timeout = 180;
//...

二、laravel队列配置任务最大重试次数,单任务最大执行时间

转自:https://www.yxccan.cn/blog/detail/41

在使用laravel队列的时候,假如没有任何配置,那么队列将会一直执行,直至成功为止,但是这不是我们想要的,这样会导致错误日志无限增长,然后爆炸


配置队列任务最大重试次数,或者单任务最大执行时间,有两种方法

方法一:artisan命令,增加—tries或者 —timeout
方法二:在Job控制器,任务类中加入变量定义


方法一

php artisan queue:listen --tries=3 //失败任务尝试3次
php artisan queue:listen --timeout=60 //每个任务运行最大时间不超过60秒

这种命令的形式,我们维护在Supervisor中,但是要是命令忘记加tries或者timeout,还是会导致出错

所以我比较推荐下面方法,嘻嘻

方法二

在任务类中直接配置

class SendEmailCode implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    /**
     * 任务最大尝试次数。
     *
     * @var int
     */
    public $tries = 3;
    /**
     * 任务运行的超时时间。
     *
     * @var int
     */
    public $timeout = 180;
//...

PS:优先级
当在类配置了,那么 artisan命令的配置将无效,即任务类配置优先

 
我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
博主25岁,前端后端算法大数据人工智能都有兴趣。
大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
聊技术,交朋友,修心境,qq404006308,微信fan404006308
26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
人工智能群:939687837

作者相关推荐

原文地址:https://www.cnblogs.com/Renyi-Fan/p/14485899.html