私は現在Django(2.0.2)サーバーを実行しています WSGI で10ワーカー
リアルタイムチャットを実装しようとしています。 チャンネル を確認しました。ドキュメントでは、サーバーは Daphne で実行する必要があること、およびDaphneは [〜#〜] asgi [〜#〜] という名前の非同期バージョンのUWSGIが必要であると述べています。
ASGIをインストールしてセットアップし、サーバーをdaphneで実行しますが、ワーカーは1つだけです(ASGIの制限)。
HTTP/HTTPSリクエストに応答し、WS/WSS(WebSocket)リクエストにASGI/Daphneを使用するために、10ワーカーのuWSGIでサーバーを実行することは可能ですか?または、ASGIの複数のインスタンスを実行することは可能ですか?
ASGIと一緒にWSGIを実行することが可能です。これはNginx構成の例です。
server {
listen 80;
server_name {{ server_name }};
charset utf-8;
location /static {
alias {{ static_root }};
}
# this is the endpoint of the channels routing
location /ws/ {
proxy_pass http://localhost:8089; # daphne (ASGI) listening on port 8089
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
proxy_pass http://localhost:8088; # gunicorn (WSGI) listening on port 8088
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 75s;
proxy_read_timeout 300s;
client_max_body_size 50m;
}
}
/ws/
を正しく使用するには、次のようにURLを入力する必要があります。
ws://localhost/ws/your_path
その後、nginxは接続をアップグレードできます。