微信扫一扫打赏支持

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命令的配置将无效,即任务类配置优先

 

 

 
posted @ 2021-03-05 14:14  范仁义  阅读(498)  评论(0编辑  收藏  举报