2012-02-16 10 views
9

私はPythonフレームワークを評価してREST APIを構築しています。私はフラスコを含む多くのフレームワークを通過して、Flaskがかなり興味深く、REST Webサービスを構築するために必要なすべての機能を使いやすくなっていることを発見しました。Flaskフレームワークでスレッドローカルが意味するものは何ですか?

フラスコのドキュメントでは、「スレッドローカルでスケーラビリティに問題がある」と言われています。

フラスコは、ローカルオブジェクトスレッド使用しています(実際にはコンテキストローカルオブジェクトを、彼らは同様にgreenletコンテキストをサポート )

リクエスト、セッションおよび余分 オブジェクトのためのあなたは、(G)に独自のものを置くことができます。それはなぜですか、そうでないのですか 悪い考えですか?はい、スレッド ローカルを使用するのは、通常はあまり明るいアイデアではありません。それらは、スレッドの概念である に基づいていないサーバーでは問題を引き起こし、大きなアプリケーションを維持しにくくします。 しかし、Flaskは大規模アプリケーション用に設計されておらず、 非同期サーバー用に設計されていません。 Flaskは、従来のWebアプリケーションである を素早く簡単に作成したいと考えています。

誰かが私にこれを理解してもらえますか、スケーラビリティの問題がどのように言及されていて、他のフレームワークでこれを処理していますか?

答えて

4

実際にスケーラビリティの問題ではなく、複雑なコードベースを維持することをより困難にする可能性があります。これは、スレッドのローカルがグローバルなデータストアとして使用され、関数の引数を介して状態を渡すのを避けるためです。そのため、何が起こっているのかを追跡するのが難しくなります。

速度が速いスレッドローカルは特に低速ですが、1つのスレッドで多くのタスクを短時間実行する非同期フレームワークを使用するのは難しく、不可能です。

+0

スレッドローカルには2つの別々の問題があることを意味します:(1)プログラマは変数の状態について考えなければなりません。 (2)一般的に使用される非同期プログラミングフレームワークは、スレッドローカルの存在下ではまったく動作しませんか? – max

関連する問題