2011-07-05 5 views
9

クライアントは、HTTP POSTとしてMJPEGストリームを掲示される: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 

... 

ここで、偽の「content-Length」ヘッダーを追加して、最大速度でデータ全体を読み取ります。 request.read(6)は、接続を中断した後にのみ(データ全体で、予想される6バイトではない)返します。

「POST」の代わりに「PUT」リクエストを使用する場合と同じ動作です。

POST要求のバッファリングをオフにする方法はありますか?

答えて

1

ここではちょっと考えています(あなたがウェブサイトを正確に提供する方法を説明しなかったからです)が、バッファリングを行うDjangoではなく、その前にWebサーバーがあると思います。これを無効にするか緩和するかは、実際に使用しているサーバーによって異なります。

あなたは(nginxのの場合)は、次のと興味があるかもしれない:nginxのは、この動作を無効にしていることかもしれないが、

基本的にそれはそう可能ではありません(disable request buffering in nginx参照)。他のサーバーについてはわかりませんが、十分な議論があるので、Googleを使用すると多くの情報が得られるはずです。

+0

注:このプロジェクトでは、コンテンツ接続に別のアプリケーション(SimpleHTTPServerを使用)を使用するように切り替えました。これは、Django/webserverサイトからのハックを防ぎ、物事を単純化します。 –

+0

質問はDjangoに関するものでした。 – aaa90210

関連する問題