zoukankan      html  css  js  c++  java
  • Excel导出功能超时解决方案 -- 异步处理

    • 背景
      • 有运营同学反馈,最近导出excel会出现超时的情况,初步判断是数据增长太快,数据量太大,请求时间超过了设置的超时时间
    • 尝试
      1. 有考虑直接更改该请求的超时时长,可是治标不治本
      2. 网上搜索发现,有很多人说采用多线程的方式,还没尝试过,不过最近另一个项目使用多线程出现了内存溢出的情况。。。暂时不考虑
    • 方案  
      • 后来找了机智的德叔咨询之后get到一个解决方案,相对简单。整体思路是,后端在开始处理请求之后,维护一个请求的状态用来标记文件是否已经生成,如果文件已经生成,将文件上传到云端返回下载地址,将地址记录,直到下次请求时将地址返回,供前端同学下载。
      • 具体流程如下
        1. 前端同学第一次请求,后端接到请求之后开始生成文件,并返回前端正在处理,用redis记录该次请求,标记状态为正在创建文件
        2. 前端同学需要定时轮询接口,查看文件链接是否生成,可在页面上设置loading效果(直到get到文件的下载url)
        3. 文件生成之后,修改redis记录状态为已生成,且记录地址url,下次接口请求时返回该url。
      • 流程图是这样的
    • 总结
      • 重点是在于采用了异步的思想取代原来同步的流程,这样请求就不会出现超时的情况,无论处理多久都木有关系   
      • 这里采用redis来记录也是考虑到下载会有一个过期时间,一个请求可能过一段时间就无效了 

      

  • 相关阅读:
    cent os 6.8 php 5.6 安装ffmpeg扩展
    Linux查找目录下文件包含关键字
    python生成随机验证码
    zabbix添加任务计划和sshd文件修改key
    OS模块
    python模块
    python内建函数
    python3 爬煎蛋ooxx妹子图
    ssm整合-Sping整合Mybatis框架配置事务07
    ssm整合-Sping整合Mybatis框架06
  • 原文地址:https://www.cnblogs.com/nightOfStreet/p/9658290.html
Copyright © 2011-2022 走看看