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

2023-11-10

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

尝试解决方案:

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

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

具体流程:

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

流程图如下: 

 

 

 ps:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel数据过大,导出超时解决方案 的相关文章

  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 如何从shell脚本自动登录MySQL?

    我有一个 MySQL 服务器 其中有一个用户和密码 我想在 shell 脚本中执行一些 SQL 查询而不指定密码 如下所示 config sh MYSQL ROOT root MYSQL PASS password mysql sh sou
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo

随机推荐

  • esp和ebp详解

    我的理解 国外一个比较好的汇编网站 http www tenouk com Bufferoverflowc Bufferoverflow1b html http blog sina com cn s blog c3bab4650101ogf
  • Python游戏开发入门3 Pygame屏幕绘制机制

    目录 屏幕控制 幕控制需求 幕控制的重要函数 幕模式函数 幕设置为大小可调 幕设置为全屏 幕信息函数 小游戏 伸缩型 屏幕控制 幕控制需求 幕控制的重要函数 幕模式函数 pygame display set mode r 0 0 flags
  • 【Python】bokeh画图工具库

    bokeh是python中一款基于网页的画图工具库 画出的图像以html格式保存 https blog csdn net tankloverainbow article details 80442289
  • java web期末复习_JAVAWEB期末复习题库

    JAVAWEB期末复习题库 javaweb期末复习题库 jsp Servlet 1 当访问一个Servlet时 以下Servlet中的哪个方法先被执行 D A destroy B doGet C service D init0 2 假设在m
  • [rt-thread nano] 添加串口rt-printf打印

    硬件 gd32f303 宏定义 定义宏定义 define RT USING CONSOLE define RT USING DEVICE define RT CONSOLE DEVICE NAME uart1 输出 ifdef RT USI
  • MySQL链接错误

    com mysql jdbc exceptions jdbc4 CommunicationsException Communications link failure package com spark import java sql Co
  • hdu 5818 Joint Stacks 2016 Multi-University 7

    Problem acm hdu edu cn showproblem php pid 5818 官方题解 bestcoder hdu edu cn blog 2016 multi university training contest 7
  • error:Target dll has been cancelled.debugger aborted

    MDK4 23调试裸机程序 出现这个问题先记下 以前成功调试过的 这次用又不会了 找一下以前的文章 今天开始摸索MDK高版本调试S3C2440裸机程序 3 4版本的实质上是借用Jlink的软件JLinkARM dll和JLinkRDI dl
  • org.yaml.snakeyaml.scanner.ScannerException: mapping values are not allowed here

    在springCloud网关启动时报了这样一个错 大概意思是 映射不允许在这 最后发现时yml文件里 处id uri predicates 以及filter没有对齐 他们是同级的 报这个错一般是配置文件里路由没配置好
  • qt exec 跟show的区别

    1 要理清两个函数的区别 首先需要理解窗口模式 模式窗口 窗口会原地阻塞 只能操作该窗口 其余窗口不能再操作 只有关闭该窗口后 代码处才会获得返回值 阻塞停止 就可以操作其它界面了 半模式窗口 窗口会原地伪阻塞 虽然也是只能操作该窗口 其余
  • vue3中一个组件调用另外一个组件的方法

    vue3中一个组件调用另外一个组件的方法 1 组件化开发是vue的比较常用的 这里简单写一个vue3的组件化开发demo案例 组件1
  • C语言中的强符号和弱符号

    一 强弱符号 强弱符号针对的是处于同一工程下在不同源文件下定义的全局变量符号 链接器只处理global的符号而不处理local的符号 链接的核心是符号的重定位 在符号引用的地方找到符号定义的地方 包括函数产生的符号和全局变量产生的符号 强符
  • 刷脸支付是当下科技发展的主流旋律

    科技发展的初衷是为人民服务 而更快捷便利的为人民服务 则是当下科技发展的主流旋律 就拿超市结账来说 以前是排着队 等收银员一件件扫完商品码之后 再掏出现金进行结账 这样不仅效率慢 而且收银员还辛苦 后来进化到刷卡 扫描二维码 效率虽然提升了
  • 学术文献也有身份证?

    关注 心仪脑 查看更多脑科学知识的分享 关键词 科普散文 干货分享 生活中 证明你是你很简单 只需拿出你的身份证或护照 其实 学术文献也有如假包换 具有唯一性的身份证 对于经常需要下载文献的同学们来说 肯定再熟悉不过了 那就是文献的DOI号
  • OpenGL渲染结果发生了奇怪的拉伸和奇怪的彩条

    部分代码如下 Load create texture and generate mipmaps int width height unsigned char image SOIL load image 1 jpg width height
  • 【分享】docker引发的172.17.x.x网段无法访问

    前言 想搭建一个测试环境 折腾vmware虚拟机 发现公司的172 17网段怎么都访问不了 使用traceroute 发现 一直走172 17 0 1 无论是怎么更改配置 都是如此 查阅资料发现 当 Docker 启动时 会自动在主机上创建
  • jquery-migrate-1.2.1.min.js 作用

    在网上下载一些 js 插件使用的时候 经常出现这种情况 但是更换低版本 jquery 比如 使用 1 7 版本的 jquery 却不会报错 能正常使用 经过一番搜索 发现是因为高版本 1 9版本以后 不兼容以前的 需要引入一个 jquery
  • linux虚拟机安装后查不到IPV4地址的解决办法

    由于选择了桥接方式 网络配置设置不正确导致 编辑network配置文件 解决此问题 cd etc sysconfig network scripts vi enp0s3 若为做特殊修改 此名字是你打ifconfig查看显示的名字 改成如下配
  • AntDesign Pro安装过程

    详细资料请到官网查看文档 Ant Design Pro相关系列文章 一 AntDesign Pro安装过程 二 基于Ant DesignPro实现通过SpringBoot后台加载自定义菜单 前端部分 三 基于Ant DesignPro实现通
  • Excel数据过大,导出超时解决方案

    问题 随着业务量的增加 数据存储也越来越大 当我们从数据库读取数据生成excel时 往往会出现超时情况 尝试解决方案 考虑直接更改该请求的超时时长 但发现 随着数据增长 依然会出现超时情况 考虑采用多线程的方式 理论可以加快数据的读取效率