2011-07-05 80 views
9

客戶端被張貼MJPEG流作爲HTTP POST:如何告訴Django不要緩存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)返回空字符串。我添加假「內容長度」標頭:

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

... 

現在它讀取最大速度的整個數據。 request.read(6)只有在中斷連接後才返回(包含整個數據,不僅僅是預期的6個字節)。

相同的行爲是當我使用「PUT」請求而不是「POST」之一。

如何關閉緩衝POST請求?

回答

1

這裏有一點點猜測(因爲你沒有解釋你是如何正確地爲網站提供服務的),但我會認爲Django並不是在做緩衝,而是在它前面的web服務器。是否可以禁用或緩解取決於您實際使用的服務器。

您可能感興趣的有以下(在Nginx的情況下):

基本上看來,與Nginx的禁用此行爲可能不可能(見disable request buffering in nginx)。不知道其他服務器,但有很多討論,所以使用谷歌應該產生大量的信息。

+0

注意:在我們的項目中,我們切換到使用單獨的應用程序(使用SimpleHTTPServer)進行內容連接。這使得Django/web服務器網站遠離黑客,簡化了事情。 –

+0

問題是關於Django。 – aaa90210