4

これはテスト アプリケーションです。

#!/usr/bin/env python

from flask import Flask
from time import sleep

application = Flask(__name__)
application.debug = True

@application.route('/a')
@application.route('/b')
@application.route('/c')
def a():
    sleep(10)
    return 'Hello world.'

if __name__ == '__main__':
    application.run()

このアプリケーションは Apache にデプロイされています。

WSGIDaemonProcess Test processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup Test

もし、あんたが

  • /a を 00:00 にリクエストする
  • /b を 00:01 にリクエスト
  • /c を 00:02 にリクエスト

、 あなたはするであろう

  • /a からの応答を 00:10 に受信
  • 00:11 に /b から応答を受信
  • 00:12 に /c からの応答を受信

しかし、もしあなたが

  • /a を 00:00 にリクエストする
  • /a を 00:01 にリクエスト
  • /a を 00:02 にリクエスト

、 あなたはするであろう

  • /a からの応答を 00:10 に受信
  • /a からの応答を 00:20 に受信
  • /a からの応答を 00:30 に受信

したがって、1 つの URL に対するすべてのリクエストは 1 つのスレッドで処理されると思います。今、私はロングプルサーバーを開発するつもりです。後続のリクエストをブロックしないように、すべてのリクエストを独立したスレッドにディスパッチする必要があると思います。私は何をすべきか?

4

1 に答える 1

3

この問題は解決されました。私の推測は正しくありません。真実は次のとおりです
。Chrome ブラウザーでは、2 つの要求が同じプロトコル、ホスト名、ポート、およびパスで構成されている場合、後の要求は前の要求が閉じるまで送信されません。
ブロックされたのはサーバーではなくブラウザでした。

于 2012-07-10T18:09:32.603 に答える