Excel数据过大,导出超时解决方案

本文介绍了一种解决从数据库生成Excel文件时遇到的超时问题的方法。通过使用异步处理和状态标记,避免了长时间的数据处理导致的连接超时,并利用Redis记录文件生成状态,最终实现前端按需下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:随着业务量的增加,数据存储也越来越大,当我们从数据库读取数据生成excel时,往往会出现超时情况。

尝试解决方案:

  1. 考虑直接更改该请求的超时时长。但发现 随着数据增长,依然会出现超时情况;
  2. 考虑采用多线程的方式,理论可以加快数据的读取效率,但当数据量过大且都加载到内存中是,容易出现OOM的情况

经过一番查找和测试,确定另外一种解决方案:整体思路是,后端在开始处理请求之后,维护一个请求的状态用来标记文件是否已经生成,如果文件已经生成,将文件上传到云端返回下载地址,将地址记录,直到下次请求时将地址返回,供前端同学下载。

具体流程:

  1. 前端同学第一次请求,后端接到请求之后开始生成文件,并返回前端正在处理,用redis记录该次请求,标记状态为正在创建文件
  2. 前端同学需要定时轮询接口,查看文件链接是否生成,可在页面上设置loading效果(直到get到文件的下载url)
  3. 文件生成之后,修改redis记录状态为已生成,且记录地址url,下次接口请求时返回该url。

流程图如下: 

 

 

 ps:

采用异步的方式,是解决超时问题的关键所在;

这里考虑到请求的有效性,选择用redis来记录excel文件生成状态。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值