0

django Web サーバーを継続的にポーリングして更新を取得する必要がある Web アプリを作成しています。このポーリングを回避する方法はありますか? 同様に、サーバーは更新時にプッシュ メッセージを送信できます。または、クライアントがイベントのコールバックを登録し、何かが変更されるたびにサーバーがコールバックをトリガーします。

ASP.net などにシグナリング フレームワークがあることは知っていますが、Django で動作するものが必要です。

ありがとう

4

1 に答える 1

1

基本的に、HTML5 の一部であるWeb ソケットは、この目的のために設計されました。つまり、http プロトコルを介したクライアントとサーバー間の双方向通信ですが、実装されているアプリケーション サーバーはほとんどなく、実際にサポートを開始した HTTP サーバーはさらに少ないことが話題になっています。 .

いくつかのパッケージがありますが:

  • ジャンゴウェブソケット
  • ジャンゴソケット
  • django で有効にしている場合、http サーバーについては何もしません。django をスタンドアロンで使用することはほとんどありません。これは、django が画像やその他の静的ファイルなどの静的コンテンツを配布するのにあまり効率的ではないためです。作業負荷を分散するだけでなく、nginx、apache などに依存しています。残念ながら、Web ソケットはまだサポートされていないため、実装によっては、最初に開始されたとしても、クライアントとアプリケーション サーバー間の通信が切断される傾向があります。

    私自身の個人的な経験から、nginx は 60 秒後に通信を中断しました。これは、開いているものに割り当てられたデフォルトの時間だったからです。

    私が知る限り、node.js は現在、Web ソケットを操作するのに最適なサーバーです。

    達成しようとしていることに応じて、通常のポーリングが効率的でないように思われる場合は、ロングポーリングを試すことができます。基本的には、クライアントにプッシュバックされる新しいデータがあるまで、接続は開いたままになります。通常のポーリングは、一定の間隔で行われます。 、各接続はインスタンスを使用するため、プロロングオープン接続を終了せずにdjangoマルチスレッドを実行するようにhttpサーバーを構成する必要がある場合があることに注意してください。

    于 2012-10-21T21:55:34.933 に答える