关注各种黑科技
B站UP主,编程教学,游戏玩家,挂B,金牛座

Django Channels初探 part4

前面的章节已经简单说明了channels的运行方法,这一节将告诉你更多关于线上部署的内容。 准备 1 nginx 作为反向代理服务器 2 daphne 作为channels的 interface server (接口服务器) 3 redis 作为channels暂存message的数据库   安装redis并配置到django项目 我们这里使用ubuntu服务器 sudo apt-get install redis-server   安装django channels redis依赖包 pip install asgi_redis   配置settings.py 让redis作为channel的后端存储, 这里也可以选用linux ipc作为后端,需要安装asgi_ipc库(https://github.com/django/asgi_ipc/)
CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "asgi_redis.RedisChannelLayer",
        "CONFIG": {
            "hosts": [("localhost", 6379)],
        },
        "ROUTING": "realtime.routing.channel_routing",
    },
}
  启动Daphne daphne命令在你安装channels库的时候已经依赖安装到系统中。启动命令
daphne -b 0.0.0.0 -p 8001 <app>.asgi:channel_layer
注意 这里需要写好asgi.py文件,请参考前面的内容   配置daphne启动文件 这里使用upstart脚本做为启动方式,你也可以使用其他启动管理进程如:circus ,supervisor ,systemd,SysV
start on runlevel [2345]
stop on runlevel [016]
respawn
script
    cd /home/ubuntu/<app home>
    export DJANGO_SETTINGS_MODULE="<app>.production_settings"
    exec daphne -b 0.0.0.0 -p 8001 <app>.asgi:channel_layer
end script
  运行worker进程 python manage.py runworker 这条命令启动了一个worker进程包含一个线程来处理消息。生产环境建议启动n个worker进程,n=服务器的cpu核心数 启动worker的upstart脚本
start on runlevel [2345]
stop on runlevel [016]
respawn
script
    cd /home/ubuntu/<app home>
    export DJANGO_SETTINGS_MODULE="<app>.production_settings"
    exec python3 manage.py runworker
end script
  Nginx配置
server {
    listen 80;
    client_max_body_size 20M;
    location /static {
       	alias /home/ubuntu/<app home>/static;
    }
    location /media {
        alias /home/ubuntu/<app home>/media;
    }
    location / {
       	    proxy_pass http://0.0.0.0:8001;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_redirect     off;
            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_set_header   X-Forwarded-Host $server_name;
        }
}
这里转发所有请求到daphne。我们在生产环境一般要分离django http和 到channels请求,django server用uwsgi启动。   让我们来测试一下现在的当前的请求转发情况    
转载请注明出处
分享到: 更多 (0)

评论 0