django-channels
私のアプリケーションにはHTTP2
& WebSocket
を追加しています。私は、チャンネルをどのようにスケールするかについて多くの文書を見つけることができませんでした。以下は私のnginx
構成で、同じマシン上で異なるポート上で実行されているdaphne
の複数のインスタンスの負荷を分散します。これは正しい方法ですか?それとともにロードバランサの背後にあるdaphneの複数のインスタンスを実行しています:django-channels
upstream socket {
least_conn;
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
server 127.0.0.1:9003;
}
server {
listen 80;
server_name 127.0.0.1;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/niscp/home-screen;
}
location /nicons/ {
root /home/niscp/home-screen;
}
location/{
include uwsgi_params;
uwsgi_pass unix:/home/niscp/home-screen/home-screen.sock;
}
location /ws/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://socket;
}
}
、私は次のように個々のチャンネルを聞くworkers
の個々のインスタンス実行している:私はすべてのHTTPを処理するためにuwsgi
を持っている
python manage.py runworker --only-channels=websocket.connect
python manage.py runworker --only-channels=websocket.receive
python manage.py runworker --only-channels=websocket.disconnect
ことdjango
は通常、それらを処理する方法を要求。 daphne
とworkers
はすべてハンドルWebSocket
です。 これはスケール可能な方法ですか?django-channels
、またはもっと良い方法がありますか?
私たちは少なくとも50kオープンして通信するソケットのために展開しています。だから、私たちは、より多くのトラフィックが発生しやすいチャネルを聞いている労働者の数を増やすと思います。ありがとう:) –