簡體   English   中英

如何加快Flask響應下載速度

[英]How to speed up Flask response download speed

我的前端Web應用程序正在緩存的終結點上調用python Flask API,並返回大約80,000行長和1.7兆字節的JSON。

我的UI大約需要7.5秒才能下載所有內容。 ui_loading_time

直接調用路徑大約需要6.5秒的時間,Chrome瀏覽器會花費時間。 在此處輸入圖片說明

我知道我可以拆分此端點以提高性能,但是出於好奇,還有什么其他不錯的選擇可以提高所有這些內容的下載速度?

到目前為止,我能想到的選擇:

1)壓縮內容。 但是然后我必須在前端將其解壓縮

2)使用gRPC之類的東西

進一步的信息:我的flask服務器正在使用gevent的WSGIServer,端點代碼如下。 PROJECT_DATA_CACHE是已返回的Jsonified數據:

@blueprint_2.route("/projects")
def getInitialProjectsData():
    global PROJECT_DATA_CACHE
    if PROJECT_DATA_CACHE:
        return PROJECT_DATA_CACHE
    else:
        LOGGER.debug('No cache available for GET /projects')
        updateProjectsCache()
        return PROJECT_DATA_CACHE

也許您可以流式傳輸文件? 如果不進行某種下載或等待,我看不到任何方式傳輸80,000行長的文件。

像您建議的那樣,這將是一個壓縮和解壓縮的機會。 絕對確保縮小了JSON。

  1. 縮小JSON的一種方法: https//www.npmjs.com/package/json-minify
  2. 流式傳輸文件: https : //blog.al4.co.nz/2016/01/streaming-json-with-flask/

這實際上還取決於項目,也許您可​​以讓用戶完全下載它?

做到這一點的最好方法是將JSON分成多個塊,然后將生成器傳遞給Response以流式傳輸它。 然后,您可以在接收到數據時呈現數據,或者顯示進度條以顯示已完成的百分比。 我有一個文件正在從AWS下載S3如何流數據的例子在這里 那應該為您指明正確的方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM