2011-11-07 6 views
1

アプリケーションメソッドがシーケンスを返すときではなく、特定のメソッドが呼び出されたときにサーバーが応答を送信するようなWSGIアプリケーションメソッドをラップする方法はありますか?WSGIで返さずに応答を送信する

基本的には、私はfinish_response(responseValue)メソッドに相当するものを持っていたいと思います。

答えて

3

WSGIアプリは、反復可能な方法で返さなければなりません。あなたが部分的応答を送信したい場合は、発電機にあなたのアプリケーションを回す(またはイテレータを返す):

import wsgiref, wsgiref.simple_server, time 

def app(environ, start): 
    start('200 OK', [('Content-Type', 'text/plain')]) 

    yield 'hello ' 
    time.sleep(10) 
    yield 'world' 

httpd = wsgiref.simple_server.make_server('localhost', 8999, app) 
httpd.serve_forever() 
+0

WSGI仕様は、基本的なWSGIサーバは、データの各ブロックのフラッシュを実行しなければならないことを言うので具体的には、これは動作しますイテラブル/ジェネレータから戻ってきて、次のものを取得します。 WSGIミドルウェアは明らかにこれをさまざまな方法で妨害する可能性があります。 –

関連する問題