【问题标题】:How to tell Django not to buffer the HTTP POST data?如何告诉 Django 不要缓冲 HTTP POST 数据?
【发布时间】:2011-07-05 18:27:54
【问题描述】:

客户端将 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”标头:

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

...

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

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

如何关闭 POST 请求的缓冲?

【问题讨论】:

    标签: python django buffering http-post


    【解决方案1】:

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

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

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

    【讨论】:

    • 注意:在我们的项目中,我们切换到使用单独的应用程序(使用 SimpleHTTPServer)进行内容连接。这使黑客远离 Django/webserver 站点,简化了事情。
    • 问题是关于 Django 的。
    猜你喜欢
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    相关资源
    最近更新 更多