238

Flask を Apache や他の Web サーバーとリンクできることはわかっています。しかし、複数のクライアントに同時にサービスを提供するスタンドアロン サーバーとして Flask を実行することを考えていました。

これは可能ですか?複数のスレッドの生成と管理を処理する必要がありますか?

4

3 に答える 3

341

flask.Flask.run**options転送先の追加のキーワード引数 ( ) を受け入れますwerkzeug.serving.run_simple。これらの引数のうちの 2 つはthreaded(ブール値) とprocesses(1 より大きい数に設定して、werkzeug が要求を処理する複数のプロセスを生成するようにすることができます) です。

threadedデフォルトTrueはFlask 1.0の時点であるため、Flaskの最新バージョンでは、デフォルトの開発サーバーはデフォルトで複数のクライアントに同時にサービスを提供できます. 古いバージョンの Flask では、threaded=Trueこの動作を有効にするために明示的に渡すことができます。

たとえば、次のことができます。

if __name__ == '__main__':
    app.run(threaded=True)

古い Flask バージョンと互換性のある方法でスレッドを使用して複数のクライアントを処理する、または

if __name__ == '__main__':
    app.run(threaded=False, processes=3)

Werkzeug に 3 つのプロセスを生成して着信要求を処理するように指示するか、または単に

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

Flask 1.0 以降を使用することがわかっている場合は、スレッドを使用して複数のクライアントを処理します。

そうは言っても、Werkzeug'sserving.run_simpleは標準ライブラリのwsgirefパッケージをラップしています。そのパッケージには、本番対応の Web サーバーではなく、WSGI の参照実装が含まれています。本番環境で Flask を使用する場合 (「本番環境」は、同時ユーザーが 10 人以下の低トラフィックの内部アプリケーションではないことを前提としています)、実際の Web サーバーの背後で立ち上げてください (Flask のドキュメントのセクションを参照してください)。いくつかの推奨される方法の展開オプション)。

于 2013-02-12T01:20:58.797 に答える