为什么FastAPI的UploadFile比Flask慢?

Mary-Kate Olsen
发布: 2024-11-07 15:35:03
原创
600 人浏览过

Why is FastAPI's UploadFile Slow Compared to Flask?

与 Flask 相比,FastAPI UploadFile 速度较慢

问题

使用 FastAPI 和 Python 请求上传 100 MB 文件大约需要 128 秒,明显慢于使用 Flask 时需要 0.5 秒。

响应

上传时间的差异主要是由于与 Flask 相比,FastAPI 中处理数据的方式造成的。处理文件上传时,FastAPI 使用 SpooledTemporaryFile 来存储传入请求数据,默认最大大小为 1 MB。当文件大小超过 1 MB 时,数据将写入磁盘上的临时文件,从而导致上传过程变慢。

潜在解决方案

1.同步文件写入

使用常规def关键字而不是async def关键字定义端点并同步写入文件。

2.异步写入(使用aiofiles)

使用async def关键字定义端点,并使用aiofiles进行异步文件写入。此方法需要等待文件操作完成。

3.使用 request.stream()

使用 request.stream() 以流形式访问请求正文。此方法允许处理大块数据,而无需将整个正文存储在内存或磁盘上,从而提高上传性能。

关键建议

为了在上传较大文件时获得最佳性能,请考虑使用该请求.stream() 方法。这种方法绕过了 1 MB 最大大小限制,并允许直接处理数据块,而无需额外的写入/读取操作。

以上是为什么FastAPI的UploadFile比Flask慢?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板