运行多个Tornado实例

* 网页响应不是特别的计算密集型处理
* 多个实例充分利用 CPU
* 多端口怎么处理 4.
使用Supervisor监控Tornado进程

安装(注意看是否需要指定使用python2版本)
sudo pip2 install supervisor 安装完之后先启动 sudo supervisord
* 检查配置文件 /etc/supervisor/supervisord.conf 没有的话自己创建
echo_supervisord_conf > /etc/supervisor/supervisord.conf

* 增加 Supervisor 配置文件到 /etc/supervisor/conf.d
增加一个tornadoes组
[group:tornadoes] programs=tornado-8000,tornado-8001,tornado-8002 #
分别定义三个tornado的进程配置 [program:tornado-8000] directory=/home/pyvip/ws/tudo/ ;
程序的启动目录 command=/home/pyvip/.virtualenvs/py3/bin/python app.py --port=8080 ;
启动命令,与手动在命令行启动的命令是一样的,注意这里home不可用~代替 autostart=true ; 在 supervisord 启动的时候也自动启动
startsecs=5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了 autorestart=true ; 程序异常退出后自动重启
startretries=3 ; 启动失败自动重试次数,默认是 3 user=pyvip ; 用哪个用户启动 redirect_stderr=true ; 把
stderr 重定向到 stdout,默认 false stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认
50MB stdout_logfile_backups = 20 ; stdout 日志文件备份数 ; stdout
日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件) stdout_logfile =
/tmp/tornado_app_8000.log loglevel=info [program:tornado-8001]
directory=/home/pyvip/ws/tudo/
command=/home/pyvip/.virtualenvs/tornado/bin/python app.py --port=8001
autostart=true startsecs=5 autorestart=true startretries=3 user=pyvip
redirect_stderr=true stdout_logfile_maxbytes = 20MB stdout_logfile_backups = 20
stdout_logfile = /tmp/tornado_app_8001.log loglevel=info [program:tornado-8002]
directory=/home/pyvip/ws/tudo/
command=/home/pyvip/.virtualenvs/tornado/bin/python app.py --port=8002
autostart=true startsecs=5 autorestart=true startretries=3 user=pyvip
redirect_stderr=true stdout_logfile_maxbytes = 20MB stdout_logfile_backups = 20
stdout_logfile = /tmp/tornado_app_8002.log loglevel=info
启动和管理

启动supervisor

使用默认的配置文件 /etc/supervisor/supervisord.conf

sudo supervisord

明确指定配置文件

sudo supervisord -c /home/pyvip/working/supervisord.con

使用 user 用户启动supervisord

sudo supervisord -u user

查看、操作进程状态

(tornado) pyvip@Vip:~/ws/tudo$ sudo supervisorctl

[sudo] password for pyvip:

tornadoes:tornado-8000 RUNNING pid 17652, uptime 0:00:28

tornadoes:tornado-8001 RUNNING pid 17653, uptime 0:00:28

tornadoes:tornado-8002 RUNNING pid 17654, uptime 0:00:28

停止运行tornado-8001服务器进程

supervisor> stop tornadoes:tornado-8001

tornados:tornado-8001: stopped

停止运行整个tornado服务器进程组

supervisor> stop tornadoes:

tornadoes:tornado-8000: stopped

tornadoes:tornado-8001: stopped

tornadoes:tornado-8002: stopped

supervisor> status

tornadoes:tornado-8000 STOPPED Jun 26 07:43 PM

tornadoes:tornado-8001 STOPPED Jun 26 07:43 PM

tornadoes:tornado-8002 STOPPED Jun 26 07:43 PM

supervisorctl 命令介绍

停止某一个进程,program_name 为 [program:x] 里的 x

supervisorctl stop program_name

启动某个进程

supervisorctl start program_name

重启某个进程

supervisorctl restart program_name

结束所有属于名为 groupworker 这个分组的进程 (start,restart 同理)

supervisorctl stop groupworker:

结束 groupworker:name1 这个进程 (start,restart 同理)

supervisorctl stop groupworker:name1

停止全部进程,注:start、restart、stop 都不会载入最新的配置文件

supervisorctl stop all

载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程

supervisorctl reload

根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启

supervisorctl update

如果让supervisor
在web页面上展示,需要修改/etc/supervisor/supervisord.conf配置文件(有用户名密码),然后按照以下方式重新加载:

sudo supervisorctl -u user -p 123 reload

使用 Nginx 作为反向代理

搭配 tornado 服务使用

安装和运行

* 安装
sudo apt-get install nginx
* 检测配置文件正确可用
sudo nginx -t
* 运行
sudo nginx
* 修改了配置文件后重启
sudo nginx -s reload
nginx 配置文件

主配置文件是 /etc/nginx/nginx.conf

项目对应的配置文件放到 /etc/nginx/conf.d/ 或者 /etc/nginx/sites-enabled/
upstream tornadoes{ server 127.0.0.1:8000; server 127.0.0.1:8001; server
127.0.0.1:8002; } proxy_next_upstream error; server { listen 8888; # 一般是 80
server_name 127.0.0.1; location /{ proxy_pass_header Server; proxy_set_header
Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme; # 把请求方向代理传给tornado服务器,负载均衡 proxy_pass
http://tornadoes; } }

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信