Tornado部署与运行

运行多个Tornado实例

网页响应不是特别的计算密集型处理
多个实例充分利用 CPU
多端口怎么处理
4.
使用Supervisor监控Tornado进程
安装(注意看是否需要指定使用python2版本)

sudo pip2 install supervisor
安装完之后先启动 sudo supervisord
1
2
检查配置文件 /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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
启动和管理

启动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;
}
}

原文地址:https://www.cnblogs.com/ExMan/p/10405661.html

时间: 2024-10-07 04:50:32

Tornado部署与运行的相关文章

部署网站运行平台LNMP + Memcached缓存

部署网站运行平台LNMP + Memcached缓存  *本实验的LNMP和Memcached都安装在同一台服务器上 *Nginx   提供网站服务 *MySQL   提供数据库服务 *PHP    提供动态网站编程语言 *Memcached 提供数据缓存(通过降低对Database的访问来加速web应用程序) 一.搭建LNMP平台(源码包安装) Linux+Nginx+Mysql+PHP(perl) 1)基本环境准备 安装"开发工具"和"开发库""Dev

在SAP云平台上部署和运行Docker应用

容器技术,Docker,虚拟化,这些名词诞生尽管有很长一段时间了,但是在云原生开发领域仍旧热度不减.甚至连SAP赖以成名的ABAP Netweaver,如今也踏上了容器化的上云探索之路,比如下面这张来自SAP社区的一篇博客: Proof of Concept: Deploying ABAP in Kubernetes 今天咱们暂时不聊ABAP的容器化,先从最简单的概念开始.网络上关于Docker容器的技术文章多如牛毛,Jerry也就不再重复了,我还是紧扣SAP技术和SAP解决方案来写. 如果有一

在Centos中部署redis运行状态图形化监控工具 — RedisLive

写在前面 前两天看到张善友老师的一篇文章<先定个小目标, 使用C# 开发的千万级应用>,里面给出了一张腾讯OA基础服务中redis运行情况的一张监控图,然后想到自己的项目中前不久也上了redis缓存,所以也想找个监控工具.搜索一番,决定使用RedisLive来做监控. 和RedisLive有关的信息 RedisLive是由python编写的并且开源的图形化监控工具,非常轻量级,核心服务部分只包含一个web服务和一个基于redis自带的info命令以及monitor命令的监控服务,界面上只有一个

OFBiz部署与运行

下载及部署命令:http://ofbiz.apache.org/download.html OFBiz的安装部署是基于ant的,官网的案例是执行load-demo任务和start任务.以下分析是以12.04版本为案例. OFBiz的ant任务解读 ./build.xml [load-demo]<-[build]<-[ofbiz-init] [ofbiz-init]设置env变量 [build] framework/build.xml(框架库的编译和打包,既包括sql和server等,也包括st

Windows上部署Cygwin运行环境之---TAR/OPENSSL

情景需求: 为了能够将Linux上的运行的 解压OPENSSL加密的tar压缩包 代码直接移植到window上使用而不需要重写该部分代码,需要在window上能够支持tar及openssl的命令行解密.对于window上如何支持shell,可参考上一篇博文. 首先,确认下cygwin是否安装了openssl,如果不支持便安装就是. 环境的部署其实很简单的,无非就是拷贝几个文件到运行环境下的bin目录下即可. 那么,如何确定需要拷贝的文件呢? 由于是shell命令下openssl的解密,那么sh.

nodejs安装部署与运行

部署 1)从官网或其他映像下载合适的版本.譬如: wget https://npm.taobao.org/mirrors/node/v10.13.0/node-v10.13.0-linux-x64.tar.xz 2)解压到合适的目录(譬如root目录),建立软连接. tar xf node-v10.13.0-linux-x64.tar.xz ln -s /root/node-v10.13.0-linux-x64/bin/node /usr/local/bin/node ln -s /root/n

tornado部署

1.为什么要运行多个tornado实例同步请求时,在应用处理过程中(如数据库查询,磁盘访问),服务器进程不能接受新请求.所以需要运行多个服务器进程实例.异步请求时,在应用处理时,服务器进程是非阻塞的,可以接受新请求,因此tornado的非阻塞架构也可以很好地解决这个问题. 2.nginx作反向代理我们使用nginx作反向代理服务器,nginx会把客户端请求中转到适当的tornado服务器进程. 3.简单的nginx代理配置示例 user nginx; worker_processes 5; er

Flask, Tornado, GEvent组合运行与性能比较

我在选一个python的互联网框架, 本来已经定下来用Tornado了.  但我还听到很多人推荐Flask的简单性和灵活性, 还有gevent的高性能, 所以决定也试试它们以及它们和Tornado的结合.  我的示例就比”Hello World”应用稍微复杂一点儿, 它用到了模板.  下面是代码: 1, 纯粹Flask (pure_flask.py) from flask import Flask, render_templateapp = Flask(__name__)@app.route('

Jfinal极速开发微信系列教程(三)--------------对JSP的支持以及部署Tomcat运行异常问题

本文章主要解决以下问题: 1.Jfianl对JSP的支持2.Jfianl Maven项目部署到Tomcat,启动项目异常问题解决 第一个问题重现截图解决方案:1.在configConstant中添加视图的配置(默认支持的视图为freemarker) me.setViewType(ViewType.JSP); 2.在Maven的配置文件中(pom.xml)添加lib 的支持 <!-- jsp --> <dependency> <groupId>org.eclipse.je