Laravel 8 队列运行问题

最近新项目使用laravel 8 时,使用队列处理一些日常异步任务后,测试发现了,一批任务运行后有部分任务运行失败,通过horizon 查看失败的任务,可以看到部分任务出现异常失败的情况,而且多次执行测试后,始终会出现失败任务。

首先说下我的相关环境,php 7.3、laravel 8、horizon 5.2;队列驱动是redis

发现这个问题后,我做过一些简单的测试;排除了一些业务逻辑的错误。

测试1

通过单张数据表,遍历数组,逐个运行队列,队列只传一个参数ID,队列只打印一行日志;

Laravel 8 队列运行问题

队列只打印一行日志

Laravel 8 队列运行问题

通过horizon查询队列运行状况;
Laravel 8 队列运行问题
多次运行,总共有24条队列,始终会出现两条padding job,最终这两条会超时出现在失败队列中。
Laravel 8 队列运行问题
这是错误信息
Laravel 8 队列运行问题

测试2

```
查询一组数据,遍历运行队列,传输整个对象作为参数,这里是我实际遇到问题的情况。
Laravel 8 队列运行问题
Laravel 8 队列运行问题
Laravel 8 队列运行问题
查询horizon,大概运行有几十条数据,有一条数据出现在错误队列中,提示下面的错误信息。
提示 No query results for model ,通过队列ID,在redis中打印出相应数据,再通过unserialize解析出model的数据后,实际上这条数据是存在的,为什么队列运行后提示不存在?
Laravel 8 队列运行问题

Laravel 8 队列运行问题

Laravel 8 队列运行问题

Laravel 8 队列运行问题

测试3

不查询数据,循环0-99条数据,运行队列
Laravel 8 队列运行问题
这次结果正常,反复运行也无失败队列或者padding job产生。

这种情况在laravel 6 之前的框架中我没有遇到过,laravel 7 没用过,不知道是否跟框架本身有关,请教,这种情况是否有人遇到或者我的测试本身就存在问题?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
godruoyi
最佳答案

可能和 Serialize 有关, 你试着把 Job 里面的 $progrom 改为 public 的试试。

🦶 我记得 Laravel 在反序列化的时候,是会根据 model id 反查数据库的。

3年前 评论
讨论数量: 6
godruoyi

可能和 Serialize 有关, 你试着把 Job 里面的 $progrom 改为 public 的试试。

🦶 我记得 Laravel 在反序列化的时候,是会根据 model id 反查数据库的。

3年前 评论

其实这个laravel 队列一直都不看好 :joy:

3年前 评论

@609468798 laravel 队列遇到的问题确实不少,不过不使用laravel有什么推荐吗?

3年前 评论

@skybao1988 自己写,redis 队列也可以,mq kafka

3年前 评论

@609468798 好的,如果这个问题始终解决不了,我会考虑。

3年前 评论
godruoyi

可能和 Serialize 有关, 你试着把 Job 里面的 $progrom 改为 public 的试试。

🦶 我记得 Laravel 在反序列化的时候,是会根据 model id 反查数据库的。

3年前 评论

@godruoyi 改成public后没有重现了,应该就是这个问题导致的,谢谢

3年前 评论

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