0

以下の議論は、非ブロッキング Web サーバーが従来の Web アプリケーションに対して何の役にも立たないことをすでにうまく説明しています。

Tornado Web ServerでDjangoを実行して、非同期+ django管理者+ django ormの可能性を実現する最良の方法は何ですか?

Django is not asynchronous, so running Django in Tornado will remove most of the performance benefits you might get from Tornado.

Play フレームワークにはノンブロッキング モデルが存在しますが、それは Web サーバーに特別な要件を課すものではありません ( Tornado のノンブロッキング モデル自体をサポートしていない、Tomcat や Jetty が動作するという印象を受けました)。私の質問は、Tomcat のような従来の Web サーバーが、Play のようなノンブロッキング対応の Web フレームワークにどのように役立つのでしょうか?

4

1 に答える 1

3

HTTP 要求の非同期処理 (1 つのスレッドが複数の HTTP 要求を処理できる場合)、Servlet API 3 以降で使用できます。Tomcat 7 および Jetty 8 は、Servlet API 3 をサポートしています。

古いサーブレット 2 コンテナーで Play/Akka アプリを実行するメリットはあまりありません。これは、要求がライフサイクル全体で割り当てられたスレッドを解放しないためです。ただし、一部のバックグラウンド処理タスクでは、この場合でも非同期機能と Akka アクターが便利です。

Django は実際には非非同期です。Tornado は内部的に非同期です。つまり、単一のスレッドで複数の TCP 接続を処理できますが、tornado.wsgiDjango と相互運用するために使用される場合、要求用のスレッドを割り当て、そのスレッドで呼び出し可能な WSGI を呼び出し、このスレッドがこの単一の要求に割り当てられます。一生。WSGI は Servlet API 2 のようなものです。

于 2013-02-12T09:21:57.437 に答える