0

django バックエンドから js クライアントのように、socket.io サーバーに接続して接続を維持する方法はありますか?

次のようなコード:

from socketIO_client import SocketIO
from django.conf import settings

def trigger_socket():
   socket_client = SocketIO(settings.SIO_HOST, settings.SIO_PORT)
   socket_client.emit('cool_task', {})

正常に動作しますが、タスクが発行されるたびに接続が開きます。それを回避する方法はありますか?または、ソケットについて何か不足していますか?

UPD参考までに、サーバー間で通信するための socket.io の使用は愚かな考えでした。この種のタスクには tornadorpc / xmlrpclib を使用します。socket.io は js クライアント側にのみ残してください。

4

2 に答える 2

2

簡単に:

あなたが説明した方法では不可能です。django を使用して socket.io などに接続する場合は、gevent.ioを参照してください。

詳細:

Django は、プロセス/スレッド モデルが原因で、従来の Web サーバーにデプロイされた場合、長時間の接続タスクを処理するのに適していません。長時間の接続を処理するには、[gunicorn][2] などのイベント駆動型 Web サーバーを採用する必要があります。

于 2012-11-14T08:36:02.727 に答える