美文网首页
Tornado基础:部署 Tornado

Tornado基础:部署 Tornado

作者: 木叶苍蓝 | 来源:发表于2023-05-24 10:45 被阅读0次

简介

为了充分利用多核 CPU,并且为了减少同步代码中的阻塞影响,在部署 Tornado 的时候需要开启多个进程(最好为每个 CPU 核心开启一个进程)。
因为 Tornado 自带的服务器性能很高,所以我们只需开启多个 Tornado 进程。为了对外有统一的接口,并且可以分发用户的请求到不同的 Tornado 进程上,我们用 Nginx 来进行代理。

supervisor

为了同统一管理 Tornado 的多个进程,我们可以借助 supervisor 工具。

安装
sudo pip install supervisor
配置

运行 echo_supervisord_conf 命令输出默认的配置项,可以如下操作将默认配置保存到文件中

echo_supervisord_conf > supervisord.conf

vim 打开编辑 supervisord,.conf 文件,修改

[include]
files = relative/directory/*.ini

[include]
files = /etc/supervisor/*.conf

include 选项指明包含的其他配置文件
将编辑后的 supervisord.conf 文件复制到 /etc/ 目录下

sudo cp supervisord.conf /etc/

然后我们在 /etc 目录下新建子目录 supervisor(与配置文件里的选项相同),并在 /etc/supervisor/ 中新建 tornado 管理的配置文件 tornado.conf。

[group:tornadoes]
programs=tornado-8000,tornado-80001,tornado-8002,tornado-8003

[program:tornado-8000]
command=/home/python/.virtualenvs/tornado_py2/bin/python /home/python/Documents/demo/chat/server.py --port=8000
directory=/home/python/Documents/demo/chat
user=python
autorestart=true
redirect_stderr=true
stdout_logfile=/home/python/tornado.log
loglevel=info

[program:tornado-8001]
command=/home/python/.virtualenvs/tornado_py2/bin/python /home/python/Documents/demo/chat    /server.py --port=8001
directory=/home/python/Documents/demo/chat
user=python
autorestart=true
redirect_stderr=true
stdout_logfile=/home/python/tornado.log
loglevel=info

[program:tornado-8002]
command=/home/python/.virtualenvs/tornado_py2/bin/python /home/python/Documents/demo/chat    /server.py --port=8002
directory=/home/python/Documents/demo/chat
user=python
autorestart=true
redirect_stderr=true
stdout_logfile=/home/python/tornado.log
loglevel=info

[program:tornado-8003]
command=/home/python/.virtualenvs/tornado_py2/bin/python /home/python/Documents/demo/chat    /server.py --port=8003
directory=/home/python/Documents/demo/chat
user=python
autorestart=true
redirect_stderr=true
stdout_logfile=/home/python/tornado.log
loglevel=info
启动
supervisord -c /etc/supervisord.conf

查看 supervisord 是否运行

ps aux | grep supervisord
supervisorctl

我们利用 supervisorctl 来管理 supervisor。

supervisorctl

> status  # 查看程序状态
> stop tornadoes:*  # 关闭 tornadoes 组 程序
> start tornadoes:*  # 启动 tornadoes 组 程序
> restart tornadoes:*  # 重启 tornadoes 组 程序
> update  # 重启配置文件修改过的程序

执行 status 命令时,显示如下信息说明 tornado 程序运行正常

supervisor> status
tornadoes:tornado-8000 RUNNING pid 32091, uptime 00:00:02
tornadoes:tornado-8001 RUNNING pid 32092, uptime 00:00:02
tornadoes:tornado-8002 RUNNING pid 32093, uptime 00:00:02
tornadoes:tornado-8003 RUNNING pid 32094, uptime 00:00:02

Nginx

对于使用 ubuntu apt-get 安装 nginx,其配置文件位于 /etc/nginx/sites-available 中,修改 default 文件如下:

upstream tornadoes {
    server 127.0.0.1:8000;
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;
    server 127.0.0.1:8003;
}

upstream websocket {
    server 127.0.0.1:8000;
}

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    location /static/ {
        root /home/python/Documents/demo/chat;
        if ($query_string) {
            expires max;
        }
    }
    
    location /chat {
        proxy_pass http://websocket/chat;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect offl
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;  # 协议 http  https
        proxy_pass http://tornadoes;
    }
}

启动 nginx

service nginx start   # 启动
service nginx stop    # 停止
service nginx restart # 重启

源码安装版本

启动:sudo sbin/nginx
停止:sudo sbin/nginx -s stop
重启:sudo sbin/nginx -s reload

相关文章

网友评论

      本文标题:Tornado基础:部署 Tornado

      本文链接:https://www.haomeiwen.com/subject/xpvfedtx.html