为了充分利用多核CPU,并且为了减少同步代码中的阻塞影响,在部署Tornado的时候需要开启多个进程(最好为每个CPU核心开启一个进程)

因为Tornado自带的服务器性能很高,所以我们只需开启多个Tornado进程。为了对外有统一的接口,并且可以分发用户的请求到不同的Tornado进程上,我们用Nginx来进行代理。

1. 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-8001,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

2. 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 off;

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

python tornado部署_tornado 部署相关推荐

  1. python tornado教程_Tornado 简单入门教程(零)——准备工作

    前言: 这两天在学着用Python + Tornado +MongoDB来做Web开发(哈哈哈这个词好高端).学的过程中查阅了无数资料,也收获了一些经验,所以希望总结出一份简易入门教程供初学者参考.完 ...

  2. ubuntu下python+tornado+supervisor+nginx部署

    由于项目需要,老师让我写一个小web系统,之前都是用java写web,想到自己最近学机器学习要用python,所以用python来写一下,此外,因为想用点新东西,也介于程序比较小,所以考虑用mongo ...

  3. python tornado入门_Tornado入门

    1.Tornado简介 tornado是一个使用Python编写的兼web框架以及服务器的framework.既能进行web application的开发,同时也内置了高性能处理的web服务器.它在处 ...

  4. 如何用 Python 和 Flask 建立部署一个 Facebook Messenger 机器人

    这是我建立一个简单的 Facebook Messenger 机器人的记录.功能很简单,它是一个回显机器人,只是打印回用户写了什么. 回显服务器类似于服务器的"Hello World" ...

  5. Python 进阶 — 创建本地 PyPI 仓库与 Python 程序的离线部署

    目录 文章目录 目录 创建本地 PyPI 仓库 安装 pypiserver 上传 Python 安装包 使用私有 PyPI 仓库 Python 程序的离线部署 pip download 获取必须的 P ...

  6. Python调用Java代码部署及初步使用

    Python调用Java代码部署: jpype下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 下载的时候需要使用Chrome浏览器进行下载 ...

  7. 西秦的ACE-Python教程 一、Python本地开发环境部署

    西秦的ACE-Python教程 一.Python本地开发环境部署     西秦 级别: 论坛版主 发帖 1357 云币 2782 加关注 写私信 只看楼主 更多操作楼主  发表于: 10-10 从今天 ...

  8. 第七课 Python Web企业门户网站-部署

    目录 7.1 Python WSGI部署原理 7.2 本地服务器部署 7.2.1 准备部署环境 7.2.2 安装和配置IIS 7.2.3 开放端口 7.2.4 部署 7.3 云服务器部署 7.3.1 ...

  9. 学python多久能上线部署网站_从开发到上线,实战持续交付

    「开发者最佳实践日」是由七牛云存储发起并联合各方小伙伴为开发者举办的系列技术沙龙,关注开发者在实际应用中可能遇到的技术问题.致力于为勇于创新的开发者们提供行业内最前沿最热门的技术干货,以技术驱动应用创 ...

最新文章

  1. Go 初体验 - 令人惊叹的语法 - defer.3 - defer 函数参数计算时机
  2. 论文笔记:PointSIFT
  3. 怎样把颜色转换为字符串
  4. 209. Minimum Size Subarray Sum 长度最小的子数组
  5. linux用户登录实验,Linux用户和组相关命令及实验
  6. python相关知识介绍一种理财方法_我是如何使用python来确定理财策略的
  7. lamp里php 的升级,lamp架构之升级php版本
  8. 虚拟机讲只读文件变为可读可写文件_Linux虚拟机文件系统突然变成只读
  9. 阿里 前端 规范_不懂源码的前端不是真正的前端
  10. ABBYY FineReader 12扫描对页的步骤有哪些
  11. html验证用户名长度,JQuery表单字符串长度验证
  12. android 登录qq接口开发,三方登录-QQ登录开发-Android(as版本)
  13. Spelling, Edit Distance, and Noisy Channels 拼写、编辑距离和噪声通道
  14. 新农合研究的文献外文回顾
  15. Python Poetry管理包安装速度慢的解决办法
  16. 《数字图像处理 第三版》(冈萨雷斯)——第三章 灰度变换和空间滤波
  17. 金蝶K3 各个表对应的名称
  18. python学习笔记--缓解眼睛疲劳的小工具
  19. 2013年微软校园招聘笔试题
  20. x_train, x_test, y_train, y_test到底是什么?

热门文章

  1. C语言置位单片机引脚,单片机复位电路作用原理以及与置位的区别
  2. android课程设计小游戏代码,课程设计:小游戏
  3. 【小5聊】layui基础之时间控件开始时间和结束时间的控制,结束时间不能小于开始时间,开始时间不能大于结束时间
  4. GTX1080ti 安装cuda-8.0和cudnn-7.5
  5. dvwa靶场通关(五)
  6. 小程序开发|uniapp底部导航栏的如何设置
  7. MSIL入门(一)C#代码与IL代码对比
  8. 3.2 天天向上的力量
  9. vue谷歌地图聚合功能
  10. 初级会计可以用计算机,初级会计考试能带计算机吗?还不知道速看!