トルネードは「Pythonで記述された比較的単純な、ノンブロッキングWebサーバーフレームワーク」です。
質問
これはおそらく愚かな質問ですが、「ノンブロッキングWebサーバー」とは正確には何ですか?すべてのWebサーバーは技術的に非ブロッキングです。それ以外の場合、同時接続をどのように処理できますか? Apache2は、fork()とpthreadの組み合わせを使用してこれを実現します。 Tornado(およびTwisted)もどの程度正確に違いますか?ソケットの束を非ボッキングモードに設定し、FDリスト(または同等のもの)を作成し、1つの大きなselect()sys呼び出しでループしますか?
これらのようなフレームワークはどこで使用しますか?また、Apache2(または他の一般的なサーバー)に対してどのような利点がありますか?ありがとう
解決
この EventMachineの記事ヒントが得られることもあります:
フォークの伝統に染み込んだ/ スレッドWebサーバー のいずれかに参加したときにかなり驚いた 大学の研究プロジェクト 数年前のウォータールー:私たち 異なるウェブサーバーのベンチマークを行っていました アーキテクチャ、およびトップパフォーマーは すべてのイベント駆動型サーバー。
質問をみんなにせがんだので、 私はすぐにその理由を理解しました-で 数十万の環境 フォークとコンテキストを要求します スレッドに関連付けられた切り替え 管理が法外になります 高価です(フォークは、 親でメモリコピーを行います 毎回処理します)。一方、 比較、タイトで非常に 最適化されたイベントループは本当に輝いています 性能に関しては 重い負荷。
所属していません StackOverflow