2

プログレッシブ Transfer-Encoding: チャンクを実行できる wsgi Web サーバーはありますか? IE では、アプリケーションから受信したコンテンツをソケットに書き込む必要があります。

wsgiref、ウェイトレス、gunicorn で以下のアプリを試してみました。それらのどれも'First bit of content'すぐに書きません..

import time

def app(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    def content():
        yield 'First bit of content\n'
        time.sleep(5)
        yield 'Second bit of content'
    return content()
4

2 に答える 2

1

Jon からのヒントのおかげで、ウェイトレスで動作するようになりました。

import time


def app(environ, start_response):

    start_response('200 OK', [('Content-Type', 'text/plain')])

    def content():
        yield ''.join(('First bit of content', '.' * 18000, '\n'))
        time.sleep(5)
        yield 'Second bit of content'
    return content()

import waitress
waitress.serve(app, host='0.0.0.0', port=8080)

ウェイトレスは、18000 バイトに達するとデータを送信します (これは、サーバーの作成時にも構成可能です)。

于 2013-08-08T10:26:23.463 に答える
0

WSGI 仕様の定義により、すべての WSGI サーバーはこれをサポートする必要があります。これは、WSGI サーバーが各 yield の間にデータをフラッシュしてクライアントに書き戻すことが WSGI 仕様の要件であるためです。 .

于 2013-08-08T11:07:08.303 に答える