Excel導出功能超時解決方案 -- 異步處理


 

  • 背景
    • 有運營同學反饋,最近導出excel會出現超時的情況,初步判斷是數據增長太快,數據量太大,請求時間超過了設置的超時時間
  • 嘗試
    1. 有考慮直接更改該請求的超時時長,可是治標不治本
    2. 網上搜索發現,有很多人說采用多線程的方式,還沒嘗試過,不過最近另一個項目使用多線程出現了內存溢出的情況。。。暫時不考慮
  • 方案  
    • 后來找了機智的德叔咨詢之后get到一個解決方案,相對簡單。整體思路是,后端在開始處理請求之后,維護一個請求的狀態用來標記文件是否已經生成,如果文件已經生成,將文件上傳到雲端返回下載地址,將地址記錄,直到下次請求時將地址返回,供前端同學下載。
    • 具體流程如下
      1. 前端同學第一次請求,后端接到請求之后開始生成文件,並返回前端正在處理,用redis記錄該次請求,標記狀態為正在創建文件
      2. 前端同學需要定時輪詢接口,查看文件鏈接是否生成,可在頁面上設置loading效果(直到get到文件的下載url)
      3. 文件生成之后,修改redis記錄狀態為已生成,且記錄地址url,下次接口請求時返回該url。
    • 流程圖是這樣的
  • 總結
    • 重點是在於采用了異步的思想取代原來同步的流程,這樣請求就不會出現超時的情況,無論處理多久都木有關系   
    • 這里采用redis來記錄也是考慮到下載會有一個過期時間,一個請求可能過一段時間就無效了 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM