9

Pythonパッケージとしてインストールできるdjangoのリアルタイムの「プッシュ」オプションは何ですか? 独立した Web サーバーをリアルタイムでインストールするようなことは避けたいと思っています。

基本的に、チャットやその他のさまざまなプッシュ操作のために、pusher.com(クラウドシステム)またはdjango用のこのsocket.ioビルド(ビルドステータス:失敗)のようなものを探しています。

ここでApe が提案されましたが、Ape をサーバーとしてセットアップする必要があるようです。求めることが多すぎない場合、djangoに組み込まれるソリューションはありますか?

4

3 に答える 3

6

回答が書かれた時から(2012年); 多くのことが変わりました。

システムのリアルタイム更新を行うための推奨される方法は、websocket を使用することです。これは、標準のRFC 6455として形式化および提案されています。MDN のこのページには、テクノロジーの優れた概要があります。

もう 1 つの新しいテクノロジは、W3C ドラフト案であるServer Sent Eventsです。

swampdragondjango-socketioなどのプロジェクトを使用すると、リアルタイム機能をプロジェクトに簡単に統合できます。


リアルタイム システムには、次の 2 つの主要コンポーネントがあります。

  1. ブラウザからサーバーへの開いたままの接続。
  2. この接続をリッスンしてから応答するサーバー。
  3. メッセージを保存して通知するためのシステム / 標準。

よし、たぶん 3 つのコンポーネント。

django はリアルタイムで動作しないため、リアルタイムのプッシュ/更新を提供するソリューションでは、別のサーバー/サービスがメッセージを受け入れ、保留中のメッセージをリスナーに通知する必要があります。

Django は、チャネル (キュー/バケット) でこのサーバーにメッセージをプッシュ (書き込み) するアプリケーションです。次に、リスナーはチャネルにサブスクライブして、メッセージの通知を受けます。接続は開いたままなので、メッセージは「リアルタイム」で取得されます。

Django は、これらすべてにおいて最小限の役割しか持っていません。リアルタイム通知が機能するために必要な 3 つのコンポーネントを提供するさまざまな実装があります。

設定が非常に簡単で、サーバー側のコンポーネントに関して多くを必要としない node.js を使用するため、私はjuggernautが本当に好きです。私がそれを好むもう 1 つの理由は、WebSocket に加えて Adob​​e Flash Socket をサポートしているためです (その他については、リンクを参照してください)。

それにアクセスするためのAPIも非常に簡単です-実際、すでにredisを使用している場合(非常に使いやすいので、本当にそうすべきです)、メッセージをredisにドロップでき、ジャガーノートがそれらを読み取るため、別のAPIは必要ありません、またはその Python API を使用できます。このフラスコのスニペットからの簡単な例:

メッセージをチャネルに送信 (書き込み) します。

>>> from juggernaut import Juggernaut
>>> jug = Juggernaut()
>>> jug.publish('channel', 'The message')

それを聞きなさい:

<script type=text/javascript
  src=http://localhost:8080/application.js></script>
<script type=text/javascript>
  var jug = new Juggernaut();
  jug.subscribe('channel', function(data) {
    alert('Got message: ' + data);
  });
</script>
于 2012-07-08T06:04:43.743 に答える
1

Django は Web ページを提供するように構築されており、Django で Websocket をサポートするためにすぐに使用できるものはありません。最も速くて簡単なオプションは pusher.com です (私はとても気に入って使っています)。pusher.com のようなものから始めて、その周りにクイック ラッパーを作成する場合は、新しいサーバーに接続するためのラッパー/インターフェイスを変更するだけで、socket.io または他の Web ソケット サーバーを使用して独自のサーバーに置き換えることができます。 . いつでもバックエンドを切り替えることができるように書いてください。

本当に自分のソケット サーバーを起動したい場合は、django でソケットを簡単に使用できるようにするプロジェクトがあります。

于 2012-04-09T19:18:03.560 に答える
0

実際には、Tornado での socketio の実装である Tornadio2からDjango を提供できます。リアルタイム アプリに高度な機能を組み込みたい場合は、セッションをチャネルにマップし、マルチキャストを処理する redis pubsub バックエンドが必要になる可能性があります。これについては、Brukvaをご覧ください。また、このテーマに関するYuval Adam のブログ投稿もお読みください。最後に、Tony Abou Assaleh のサンプル パッケージ投稿は、django 用に tornadio2 をセットアップする際に役立つ基本リファレンスを提供します。

于 2012-07-08T05:34:00.807 に答える