首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Django同时运行UWSGI和ASGI

使用Django同时运行UWSGI和ASGI
EN

Stack Overflow用户
提问于 2018-02-15 03:37:34
回答 1查看 6.8K关注 0票数 14

我目前运行的是Django (2.0.2)服务器,uWSGI有10个工作进程

我正在尝试实现一个实时聊天,我看了一下Channel。文档提到,服务器需要与Daphne一起运行,并且Daphne需要一个名为ASGI的异步版本的UWSGI。

我必须安装和设置ASGI,然后用daphne运行服务器,但只有一个工人(据我所知,这是ASGI的一个限制),但是负载对工人来说太高了。

有没有可能在服务器上运行10个工作进程的uWSGI来响应HTTP/HTTPS请求,并对WS/WSS (WebSocket)请求使用ASGI/Daphne?或者也许可以运行多个ASGI实例?

EN

回答 1

Stack Overflow用户

发布于 2018-03-14 09:35:58

可以在ASGI的同时运行WSGI。下面是一个Nginx配置的示例:

代码语言:javascript
复制
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:

代码语言:javascript
复制
ws://localhost/ws/your_path

然后nginx将能够升级连接。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48794936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档