[英]How to speed up Flask response download speed
我的前端Web应用程序正在缓存的终结点上调用python Flask API,并返回大约80,000行长和1.7兆字节的JSON。
直接调用路径大约需要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。
这实际上还取决于项目,也许您可以让用户完全下载它?
做到这一点的最好方法是将JSON分成多个块,然后将生成器传递给Response
以流式传输它。 然后,您可以在接收到数据时呈现数据,或者显示进度条以显示已完成的百分比。 我有一个文件正在从AWS下载S3如何流数据的例子在这里 。 那应该为您指明正确的方向。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.