質問

非同期フレームワークを使用する利点は何かを理解するのに役立ちます。簡単なチャットWebアプリを開発したいとします。誰かが新しいメッセージを入力するまでサーバーに応答を送信しないロングポーリングを行うDjangoフレームワークでPythonコードを書くことができないのはなぜですか? Twistedは、チャットアプリなどのリアルタイムアプリに利点をもたらすものを提供していますか?

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

役に立ちましたか?

解決

非同期サーバーは、より多くの同時クライアント接続をサポートします。より多くの従来のサーバーは、多数の同時クライアント、特に長寿命の接続を持つクライアントを処理するときに、スレッドとプロセスの制限に直面します。非同期サーバーは、たとえばスレッドコンテキストの切り替え。

Twisted フレームワークと同様に、Pythonの標準ライブラリには非同期サーバービルディングブロックもあります。以前は asyncore および asynchat でしたが、現在は asyncio も。

他のヒント

まず、DjangoはWebアプリを記述するためのフレームワークであるため、ORM、htmlテンプレートを提供し、httpサーバーなどを実行する必要があります。Twistedは、それよりもはるかに低いレベルのコードを書くのに役立ちます。 Djangoが実行されるhttpサーバーを記述するために、twistedを使用できます。 Djangoを使用する場合は、httpモデルに制限され、ツイストを使用すると、プッシュプロトコルを含む任意のプロトコルで通信できます。チャットの例では、すべてのクライアントが繰り返しポーリングする必要があるdjangoでVSにログインしているユーザーにコメントをプッシュできるため、より拡張性の高いサーバーを取得できます。

コメントを反映するように編集:sos-skyl

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

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

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

twistedでは、独自のプロトコルを実装できます。 Djangoは確かにこれを行うことはできません。

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

btw:このデモをGoogle App Engineに移行したいと考えています より完全なサービスとして 私の人生は少し落ち着きました。

TwistedとDjangoを統合するためのソースをご覧になりたい場合は、ヤードバード

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top