如何加快Flask响应下载速度

2024-04-24 00:51:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我的前端web应用程序正在一个缓存的端点上调用python Flask API,并返回一个大约80000行长、1.7兆字节的JSON。在

我的用户界面大约需要7.5秒才能下载全部内容。 ui_loading_time

直接调用路径时需要Chrome大约6.5秒。 enter image description here

我知道我可以拆分这个端点来提高性能,但是出于好奇,还有什么其他的好方法可以提高所有这些内容的下载速度?在

到目前为止我能想到的选择:

1)压缩内容。但是我必须在前端减压

2)使用gRPC之类的东西

更多信息: 我的flask服务器正在使用gevent的WSGIServer,端点代码如下。PROJECT\u 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

Tags: projectapiwebjson应用程序flaskcache内容
2条回答

最好的方法是将JSON分成块,并通过向Response传递生成器来流式处理。然后,您可以在接收数据时呈现数据,或者显示一个显示完成百分比的进度条。我有一个示例,演示如何将数据流化为从aws3here下载的文件。这会给你指明正确的方向。在

也许你可以流式传输文件?如果不下载或等待,我看不出有任何方法可以传输80000行长的文件。在

这将是一个压缩和解压缩的机会,就像你建议的那样。一定要确保JSON被缩小。在

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

它还真的取决于项目,也许你可以让用户完全下载它?在

相关问题 更多 >