非同期フレームワークを使用する利点を理解する助けが必要です。シンプルなチャット Web アプリを開発したいとします。誰かが新しいメッセージを入力するまでサーバーに応答を返さない長いポーリングを行うDjangoフレームワークでpythonコードを書くことができないのはなぜですか。チャット アプリのようなリアルタイム アプリにとって、Twisted が提供する利点は何ですか?
申し訳ありませんが、非同期フレームワークの必要性について少し混乱しています。
非同期フレームワークを使用する利点を理解する助けが必要です。シンプルなチャット Web アプリを開発したいとします。誰かが新しいメッセージを入力するまでサーバーに応答を返さない長いポーリングを行うDjangoフレームワークでpythonコードを書くことができないのはなぜですか。チャット アプリのようなリアルタイム アプリにとって、Twisted が提供する利点は何ですか?
申し訳ありませんが、非同期フレームワークの必要性について少し混乱しています。
まず、DjangoはWebアプリを作成するためのフレームワークであるため、ORM、htmlテンプレートを提供し、httpサーバーなどを実行する必要があります。Twistedは、それよりもはるかに低レベルのコードを作成するのに役立ちます。ツイストを使用して、Djangoが実行されるhttpサーバーを作成できます。Djangoを使用する場合は、httpモデルに制限されており、ツイストを使用すると、プッシュプロトコルを含む任意のプロトコルで通信できます。したがって、チャットの例では、すべてのクライアントが繰り返しポーリングする必要があるdjangoを使用してVSにログインしたユーザーにコメントをプッシュできるため、より拡張性の高いサーバーが得られます。
コメントを反映するように編集:sos-skyl
非同期サーバーは、はるかに多数の同時クライアント接続をサポートします。従来型のサーバーでは、多数の同時クライアント、特に長時間接続しているクライアントにサービスを提供するときに、スレッドとプロセスの制限に直面します。非同期サーバーは、スレッド コンテキストの切り替えなどのオーバーヘッドを回避するため、パフォーマンスも向上します。
フレームワークと同様にTwisted
、Python の標準ライブラリには非同期サーバー ビルディング ブロックもあります。以前はasyncore
とasynchat
でしたが、現在は も含まれていasyncio
ます。
私にとっての最大の利点は、Twisted が状態を持つアプリケーションを提供し、多くのプロトコルを使用して多くの異なるクライアントと通信できることです。
私の場合、Twisted サーバーは、家庭や企業に設置された電力使用量を監視する多数のセンサーと通信します。データを保存し、最近のデータと状態をメモリ内の便利な python クラスに保持します。django からの xmlrpc 経由のリクエストはこの状態を取得し、最近のデータをユーザーに提示できます。私の Gridspy はまだ開発中なので、your.gridspy.co.nz の実際のサイトは少しプレアルファです。
最良の部分は、効果的なサーバーを作成するために必要なコードが驚くほど少ないことです。驚くべき量の作業が行われます。
Twisted と Django を統合するためのソースを見たい場合は、Yardbirdをご覧ください。