StreamingHttpResponse和HttpResponse
来源:互联网 发布:安卓电子白板书写软件 编辑:程序博客网 时间:2024/06/06 01:45
在修改以前的文件下载功能时,发现一个文件有5G,用HttpResponse实现时,服务器返回502错误,查看nginx log时,发现nginx log记录的是: upstream prematurely closed connection while reading response header from upstream。应该是nginx服务器从上游获取数据时超时了。查了很多办法,修改了nginx的配置,但是仍然超时。绝望之下,查了一下Django的文档,发现了StreamingHttpResponse,试了一下效率提高了很多。后来仔细查了一下发现HttpResponse在使用文件迭代器时:
HttpResponse will consume the iterator immediately, store its content as a string, and discard it.HttpResponse会直接使用迭代器对象,将迭代器对象的内容存储城字符串,然后返回给客户端,同时释放内存。可以当文件变大看出这是一个非常耗费时间和内存的过程。
而StreamingHttpResponse是将文件内容进行流式传输,StreamingHttpResponse在官方文档的解释是:
The StreamingHttpResponse class is used to stream a response from Django to the browser. You might want to do this if generating the response takes too long or uses too much memory.这是一种非常省时省内存的方法。但是因为StreamingHttpResponse的文件传输过程持续在整个response的过程中,所以这有可能会降低服务器的性能。
参考文档:https://docs.djangoproject.com/en/1.10/ref/request-response/
0 0
- StreamingHttpResponse和HttpResponse
- pyhon中Django框架的StreamingHttpResponse和HttpResponse
- Servlet HttpRequest和HttpResponse
- HttpRequest和HttpResponse对象
- HttpResponse
- HttpResponse
- HttpResponse
- HttpClient和HttpResponse的使用
- 服务器的两个对象:HttpResponse和HttpRequest
- HttpRequest,HttpResponse,HTTP GET 和 HTTP POST
- Android联网使用HttpClient 和HttpResponse 小结
- Android之HttpClient 和HttpResponse 小结
- Django的HttpRequest和HttpResponse对象
- Django——HttpRequest和HttpResponse
- httprequest跳转和httpresponse跳转的区别
- HttpResponse httpResponse=null;
- Django系列教程(6)-- HttpRequest对象和HttpResponse对象
- HttpResponse java
- Angular企业级开发(7)-MVC之控制器
- 开博
- 2015-《Sparse Gaussian Process Regression for Compliant, Real-Time Robot Control》
- JavaScript杂谈之promise揭秘
- VS2015配置PBC库
- StreamingHttpResponse和HttpResponse
- 【zabbix教程七】——zabbix3.0配置微信报警
- 初探面向对象编程(1)———高精度模板part1
- javascript语言精粹笔记(三)函数
- 安卓捕获运行时异常
- POJ 1854
- POJ 3666 Making the Grade
- 欢迎您在新浪博客安家
- 国内外学习科学研究机构简介…