【发布时间】:2023-03-16 03:33:02
【问题描述】:
我正在使用django-channels 为我的应用程序添加HTTP2 和WebSocket 支持。我找不到很多关于如何扩展频道的文档。下面是我的nginx 配置,它对在同一台机器上运行但端口不同的多个daphne 实例进行负载平衡。这是正确的做法吗?
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 的各个实例以通过以下方式收听各个频道:
python manage.py runworker --only-channels=websocket.connect
python manage.py runworker --only-channels=websocket.receive
python manage.py runworker --only-channels=websocket.disconnect
我让uwsgi 以django 通常处理它们的方式处理所有http 请求。所有daphne 和workers 所做的都是处理WebSocket 请求。
这是扩展django-channels 的可行方法,还是我可以做得更好?
【问题讨论】:
标签: python django nginx django-channels