web-dev-qa-db-ja.com

ジャンゴでプッシュシステムを構築する方法?

Djangoでプッシュシステムを構築する必要があります。基本的に、その機能はサーバーからブラウザーにメッセージをプッシュすることです。

Nodejsは使用できないため、websocketまたはorbitedを好みますが、Djangoでこれら2つのいずれかを実装する方法がわかりません。 plsは私に方法を勧めます、これは私に大いに役立ちます、thx。

23
Stan666

Djangoは、クライアントに「プッシュ」するのが得意ではありません。 Djangoが唯一のオプションである場合、プッシュを模倣する唯一の方法はロングポーリングを使用することです。しかし、これは効率的ではありません。代わりに、Webソケットは高温です。竜巻とねじれがここで役立ちます。そこでまた、質問に対するより完全な回答 here です。

10
hymloth

1つのオプションは、REST /プッシュAPIを備えたDjangoサーバーと並行して実行されているWebSocketサーバーを使用し、単純にHTTPによってDjangoからプッシュすることです。/POSTをWebSocketサーバーに送信すると、接続されているすべてのWebSocketクライアントにメッセージが配信されます。

そうすれば、既存のDjangoアプリに構造的/技術的な変更を加える必要はありませんが、それでもスケーラブルで最新のWebSocketベースのプッシュ機能があります。

上記のホスティングサービスについては、 http://pusher.com を確認します。

独自に実行したい場合は、すぐに実行できる仮想アプライアンス(VMware、VirtualBox、Amazon EC2)としてデプロイされている http://autobahn.ws をご覧ください。 REST/APIの実際の例はここにあります https://github.com/tavendo/AutobahnPushPython

免責事項:私はAutobahn Open-sourceの作成者であり、Autobahn.ws(Autobahn OSSに基づく商用製品)を提供するTavendoで働いています。

13
oberstet

DjangoでのWebSocketの別の実装: https://github.com/jonashagstedt/swampdragon

ドキュメントから:SwampDragonは、Djangosの素晴らしいORM、Tornadosの優れたWebSocketサポート(フォールバックあり、IE7でテスト済み)、Redisの驚異的な速度を利用しています。

9
potar

2016年現在、 Django Channels があり、これによりWebSocketがDjango(1.8以上)になります。

公式の一部Djangoプロジェクト でもあります。

8
np8

Djangoモジュールがあります。これは、Redisをメッセージキューとして使用するWebsocketをすぐにサポートします。こちらをご覧ください: https://github.com/jrief/Django-websocket -redis

免責事項:私はそのライブラリの作者です。

6
jrief

@hymlothが示唆するように、より良い方法は、トルネードまたはnode.jsを使用することです。

しかし、Djangoを使用する必要がある場合は、WebSocketの実装に関する記事を書いてあります。

http://curella.org/blog/2012/jul/17/Django-Push-using-server-sent-events-and-websocket/

5
fcurella

Djangoオムニバス

内部で竜巻を使用し、python 3をサポートしています。

1
Ryu_hayabusa