5

私は Django をしばらく使用しており、ubuntu で Apache 2 mod_wsgi と PostgreSQL データベースを使用するセットアップでいくつかのアプリを作成しました。

xsendfile を使用して、Django ビューを介して Apache からファイルを提供し、ユーザーがフォームを介してファイルをアップロードできるようにするアプリがあります。これはすべてうまく機能していますが、ユーザーがブラウザを更新せずにチャットしたり、新しいファイルがアップロードされたときに確認したりできるようにすることで、機能を強化したいと考えています (そして複雑さは確実に増しています)。

これをスケーラブルにしたいので、AJAX で継続的にポーリングしたくありません。これは、多数のユーザーで非常に重くなるためです。

私はより多くの投稿、サイト、ブログを読んだので、comet 機能を Django アプリに統合することを期待できますが、これを行う方法については非常に多くの異なる意見があり、完全に混乱しています。

orbited、gevent、iosocket を使用する必要がありますか? Tornado はこの議論のどこに当てはまりますか?

メッセージもデータベースに保存したいのですが、データベースへの書き込み時にアプリケーションがブロックされないようにするために特別な構成が必要ですか? Django でチャット サーバーを実行すると、Apache からファイルを提供する能力に影響がありますか?

4

2 に答える 2

7

双方向のリアルタイム通信には WebSocket を使用することをお勧めします。Django をそのまま実行し、別のポートで WebSocket サーバーを実行します。データベースのブロックに関しては、そうです。WebSocket サーバーを記述し、非ブロック データベース ドライバーを使用するか、何らかの方法でそれに対処する際には、そのことを念頭に置く必要があります。

クライアント側では、Socket.IOまたはweb-socket-jsを使用して、フラッシュをサポートしていない古いブラウザーのフラッシュ フォールバックをサポートする必要があります。

サーバーについては、個人的には gevent または tornado に傾倒します。gevent にはgevent-websocketgevent-socketioがあり、トルネードには組み込みの WebSocket サポートがあり、 Socket.IO を使用する場合はトルネーディオを使用できます。Eventlettwistedはどちらも WebSocket もサポートしています。また、twisted 上に構築された autobahn と呼ばれる非常にクールな新しいプロジェクトもあり、meinheldは使用できる WebSocket ミドルウェアがあります。

WebSocket は非常にエキサイティングであり、そのため、このテーマに関するすばらしい投稿がたくさんあります。これらの投稿は役に立ちました:

于 2011-08-15T14:00:11.413 に答える
1

Apache + X-Sendfileの代わりに、Nginx+X-Accel-Redirectを使用できます。このようにして、ロングポーリングを提供するビューを使用して、Nginxの背後でgevent / wsgi/djangoサーバーを実行できます。個別のWebSocketサーバーは必要ありません。

Apache+X-SendfileとNginx+X-Accel-Redirectの両方を使用して、Webfactionで(アクセス保護された)コンテンツを問題なく提供しました。

于 2012-06-30T18:08:08.070 に答える