laravel队列超时报错

1. 运行环境

laravel 8,php 7.3 ,windows 10,小皮

2. 问题描述?

项目刚开始前端可能会传进来很多图片,需要以每秒钟10个的速率上传到腾讯云的训练库里,考虑laravel队列,使用Reids驱动,php artisan queue:work进行监听。刚开始执行没什么问题,但后面队列会长时间没有任务进来,长时间后再进来一个job就会执行失败,报错日志为远程主机强迫关闭了一个现有的连接,这种应该怎么解决,或者有什么更好的方案,希望大神可以指导一下。

laravel队列超时报错

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

Redis配置文件的timeout连接超时配置为0就好了,一开始以为这个是连接不上的超时配置,试了一下,应该是连接成功后的超时配置,删了就好了。

6天前 评论
讨论数量: 11

应该是Redis链接没有操作,被服务器断开了,可以尝试一次配置长连接,或者在任务中间件里面检测一下redis的链接,失效了就重新连接~

3周前 评论
SiuhoY (楼主) 3周前

任务存到数据库 定时任务每秒去扫 执行起来不是更简单吗

3周前 评论

用php artisan queue:listen这个吧,这个虽然性能低点,但是不会出现这种情况

3周前 评论

看着你是使用了redis做了限流吧,在使用之前ping一下,捕捉异常,如果异常了,关闭链接重新打开

try {
    // 尝试链接redis
} catch (\Predis\Connection\ConnectionException $e) {
    // 记录错误
    // 重置连接
    Redis::connection()->disconnect();
    Redis::connection()->connect()}
3周前 评论
SiuhoY (楼主) 3周前

建议好好看下队列文档。队列;队列默认超时时间为60s,你需要调整超时时间,该时间不能大于retry_after配置时间,retry_after配置详见config/queue.php

file
file

3周前 评论
SiuhoY (楼主) 3周前

你好,不知道你的问题是否解决,我有一些建议不知道是否可行

1,如果能知道大概多久会断开连接,可不可以设置一个定期重启,使用进程守护者之类的工具,在断开连接之前重启连接,刷新一下他的长时间没有执行任务的这个时长

2,可不可以做一个错误处理,出现这种断开连接报错之后,重新连接,之后继续执行任务

如果你的问题已经解决,可以说一下解决的办法

1周前 评论
SiuhoY (楼主) 6天前

Redis配置文件的timeout连接超时配置为0就好了,一开始以为这个是连接不上的超时配置,试了一下,应该是连接成功后的超时配置,删了就好了。

6天前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!