python - 如何告诉 Django 不要缓冲 HTTP POST 数据?

标签 python django buffering http-post

客户端正在将 mjpeg 流作为 HTTP POST 发布:

POST /feed/testfeed HTTP/1.0
Content-type: multipart/x-mixed-replace; boundary=--myboundary

--myboundary
Content-length: 14179
Content-type: image/jpeg

....JFIF....
....

我在 Django 中根本看不到任何传入数据。 request.read(6) 返回空字符串。我添加了假的“content-Length” header :

POST /feed/testfeed HTTP/1.0
Content-Length: -1
Content-type: multipart/x-mixed-replace; boundary=--myboundary

...

现在它以最快的速度读取整个数据。 request.read(6) 仅在我中断连接后返回(包含全部数据,而不仅仅是预期的 6 个字节)。

相同的行为是当我使用“PUT”请求而不是“POST”请求时。

如何关闭POST请求的缓冲?

最佳答案

这里有点猜测(因为你没有解释你是如何准确地为网站提供服务的),但我认为不是 Django 做缓冲,而是在它前面的网络服务器。是否可以禁用或缓解此问题取决于您实际使用的服务器。

您可能对以下内容感兴趣(如果是 Nginx):

基本上看来,Nginx 禁用此行为可能是不可能的(参见 disable request buffering in nginx )。不确定其他服务器,但那里有很多讨论,所以使用谷歌应该会产生很多信息。

关于python - 如何告诉 Django 不要缓冲 HTTP POST 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6587164/

相关文章:

python - 将表单传递到 HTML 页面 django

c# - BufferedInputStream(在 Java 中)的 C#/.NET 等价物是什么?

android - 音频流缓冲

python忽略证书验证urllib2

python - 这是 numpy 高级索引的错误吗?

django 表单设置当前登录用户

django - Django-如何从用户输入中增加整数字段?

ios - AVPlayer(和 MPMoviePlayerController)试图缓冲整个(流媒体)视频,内存不足

python - 识别方程中的变量

python - 机器人框架+AutoIt : Dictionary does not contain key