0

いくつかのことをテストしようとしているときに、Django + apache2+mod_wsgi3.3を使用します。結果の定期的な生成を実行すると、2つの異なる結果が見つかります。埋め込みモードとデーモンモードの間。

埋め込みモードで試してみると、つまりWSGIDaemonProcessがない場合、WSGIProcessGroupディレクティブが使用されます。下記の関数は次々に結果を生成し、2秒間のスリープ後にすべての数字がブラウザビューに印刷されます。

def yielder(request):
    gen = testYielding()
    return HttpResponse(gen)

def testYielding():
    yield "3"
    time.sleep(2)
    yield "4"
    time.sleep(2)
    yield "5"
    time.sleep(2)
    yield "6"
    time.sleep(2)
    yield "7"

DaemonModeがオンの場合でも、このビューは、8秒後に完全な応答を照合した後、すべての数字が一緒に印刷され、同じものを次々に生成せずにデータに応答します。

この動作は正しいですか?デーモンモードで応答が埋め込みモードのように生成されることを確認する方法はありますか?

4

1 に答える 1

0

デーモン プロセスで発生するフラッシュは、プロキシを実行している Apache 子ワーカー プロセスには転送されません。したがって、出力がすぐにクライアントに戻されるかどうかは、登録した Apache 出力フィルターに部分的に依存します。フラッシュする前に応答データをバッファリングしようとする出力フィルタがある場合、この問題が発生します。

したがって、どの Apache 出力フィルタが配置されているかを詳しく調べる必要があります。これらを変更できる場合は、組み込みモードを使用するしかありません。

于 2012-04-18T01:13:10.893 に答える