14


7

非同期フレームワークを使用する利点が何であるかを理解するのに役立つ必要があります。 簡単なチャットWebアプリケーションを開発したいとします。 誰かが新しいmsgを入力するまでサーバに応答を送り返してはいけないところでロングポーリングを行うPythonコードをDjangoフレームワークに書かないのはなぜでしょう。 Twistedはチャットアプリのようなリアルタイムアプリにとって有利な点は何ですか?

申し訳ありませんが、非同期フレームワークの必要性についてはほとんど混乱していません。

6 Answer


18


まず最初にDjangoはWebアプリを書くためのフレームワークであるため、ORM、htmlテンプレートを提供し、httpサーバーなどを実行する必要があります。 Twistedはそれよりずっと低いレベルのコードを書くのを助けます。 Djangoが動作するhttpサーバを書くためにtwistedを使うことができます。 Djangoを使うのであれば、httpモデルに限定されていますが、ツイストしている場合はプッシュプロトコルを含む好きなプロトコルで通信できます。 チャットの例では、djangoを使ってVSにログインした人にコメントをプッシュすることができるため、すべてのクライアントが繰り返しポーリングする必要があるため、拡張性の高いサーバーが得られます。

コメントを反映するように編集されました:sos-skyl


16


非同期サーバーは、はるかに多数の同時クライアント接続をサポートします。 従来のサーバーでは、多数の同時クライアント、特に長寿命の接続を使用しているクライアントにサービスを提供する場合、スレッドとプロセスの制限に直面します。 非同期サーバーはまた、サーバーのオーバーヘッドを回避するため、パフォーマンスが向上します。 スレッドコンテキストの切り替え

Twistedフレームワークと同様に、Pythonの標準ライブラリには非同期のサーバ構築ブロックもあります:以前は asyncore`と asynchat`でしたが、今は `asyncio`でもあります。


5


私にとっての最大の利点は、Twistedがステートを持ち、多くのプロトコルを使用してさまざまなクライアントと通信できるアプリケーションを提供することです。

私の場合、私のTwistedサーバーは家や企業に設置された電力使用量を監視するセンサーと通信します。 それはデータを格納し、メモリ内の便利なpythonクラスの最近のデータと状態を保持します。 djangoからxmlrpcを介したリクエストはこの状態を取得し、最近のデータをユーザーに提示することができます。 私のGridspyのものはまだ開発中ですので、your.gridspy.co.nzの実際のサイトは少しプレアルファです。

最良の部分は、効果的なサーバーを作成するために必要なコードが驚くほど少ないことです。 驚くべき量の仕事があなたのために行われます。


3


ねじれてあなたはあなた自身のプロトコルを実装することができます。 Djangoは確かにこれができません。


0


あなたはどちらかの代わりに WHIFFを使うことができます:) http://aaron.oirt.rutgers.edu/myapp/gfChat/nucularChatRoomをチェックしてください。これはjsonとのjavascriptポーリングループを使用してサーバーの更新をチェックします。 あなたはおそらくDjangoで似たようなことをすることができましたが、私はDjangoをあきらめたのでどうして私は知りません。

ところで:私は私の人生が少し落ち着いたらもっと完全なサービスとしてグーグルアプリエンジンにこのデモを移すことを望んでいます。


0


TwistedとDjangoを統合するための情報源を調べたい場合は、http://zork.net/motd/nick/django/introducing-yardbird.html [ヤードバード]をご覧ください。