繁体   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