[python] tornado supervisor监控 以及 Nginx反向代理
文章目录
- Supervisor
- 简单的tornado
- supervisor
- 配置
- 启动
- 效果
- Nginx反向代理
- 安装pcre和nginx
- nginx配置文件
Supervisor
Supervisor 是一个客户端/服务器系统,
允许其用户监视和控制类似UNIX的操作系统上的多个进程。
在Python服务宕机后可以自动重启
环境
CentOS7.9
python3.8
supervisor 4.1.0supertvisor版本过低可能会报错
ImportError: cannot import name ‘escape’ from 'cgi
pip阿里源 http://pub.mirrors.aliyun.com/pypi/simple/
安装 pip3 install supervisor
参考
https://learnku.com/docs/python-learning/tornado-foundation-deployment/10899
http://shouce.jb51.net/tornado/ch8.html
https://www.cnblogs.com/Yunya-Cnblogs/p/14337673.html#_caption_0
简单的tornado
[root@master129 ~/tornado_test]# cat main.py
import tornado.web
import tornado.ioloop
import tornado.httpserver
import tornado.options # 新导入的options模块tornado.options.define("port", default=8000, type=int, help="服务器监听端口号")class IndexHandler(tornado.web.RequestHandler):"""主路由处理类"""def get(self):self.write(f"tornado port: {port}")if __name__ == "__main__":tornado.options.parse_command_line()port = tornado.options.options.port app = tornado.web.Application([(r"/", IndexHandler),])app.listen(port)tornado.ioloop.IOLoop.current().start()
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。
[root@master129 /etc/supervisor]# cat tornado.conf
[group:tornadoes]
programs=tornado-8000,tornado-8001,tornado-8002,tornado-8003[program:tornado-8000]
command=python3 /root/tornado_test/main.py --port=8000
directory=/root/tornado_test
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/root/tornado_test/tornado.log
loglevel=info[program:tornado-8001]
command=python3 /root/tornado_test/main.py --port=8001
directory=/root/tornado_test
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/root/tornado_test/tornado.log
loglevel=info[program:tornado-8002]
command=python3 /root/tornado_test/main.py --port=8002
directory=/root/tornado_test
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/root/tornado_test/tornado.log
loglevel=info[program:tornado-8003]
command=python3 /root/tornado_test/main.py --port=8003
directory=/root/tornado_test
user=root
autorestart=true
redirect_stderr=true
stdout_logfile=/root/tornado_test/tornado.log
loglevel=info
启动
supervisord -c /etc/supervisord.conf
查看 supervisord 是否在运行:
ps aux | grep supervisord
利用 supervisorctl 来管理 supervisor。
supervisorctl
status # 查看程序状态
stop tornadoes:* # 关闭 tornadoes组 程序
start tornadoes:* # 启动 tornadoes组 程序
restart tornadoes:* # 重启 tornadoes组 程序
update # 重启配置文件修改过的程序
执行 status 命令时,显示如下信息说明 tornado 程序运行正常:
效果
服务宕机后自动重启
[root@master129 /etc/supervisor]# ps aux | grep python3
root 1481 0.0 0.9 225684 16880 ? Ss 00:31 0:00 /usr/local/python3.8/bin/python3 /usr/local/python3.8/bin/supervisord -c /etc/supervisord.conf
root 1482 0.0 1.0 225704 19476 ? S 00:31 0:00 python3 /root/tornado_test/main.py --port=8000
root 1483 0.0 1.0 225704 19428 ? S 00:31 0:00 python3 /root/tornado_test/main.py --port=8001
root 1484 0.0 1.0 225704 19488 ? S 00:31 0:00 python3 /root/tornado_test/main.py --port=8002
root 1485 0.0 1.0 225704 19524 ? S 00:31 0:00 python3 /root/tornado_test/main.py --port=8003
root 1512 0.0 0.0 112824 984 pts/0 R+ 01:00 0:00 grep --color=auto python3[root@master129 /etc/supervisor]# kill -9 1482[root@master129 /etc/supervisor]# ps aux | grep python3
root 1481 0.0 0.9 225684 16980 ? Ss 00:31 0:00 /usr/local/python3.8/bin/python3 /usr/local/python3.8/bin/supervisord -c /etc/supervisord.conf
root 1483 0.0 1.0 225704 19428 ? S 00:31 0:00 python3 /root/tornado_test/main.py --port=8001
root 1484 0.0 1.0 225704 19488 ? S 00:31 0:00 python3 /root/tornado_test/main.py --port=8002
root 1485 0.0 1.0 225704 19524 ? S 00:31 0:00 python3 /root/tornado_test/main.py --port=8003
root 1527 4.5 1.0 225704 19172 ? S 01:01 0:00 python3 /root/tornado_test/main.py --port=8000
root 1529 0.0 0.0 112824 984 pts/0 R+ 01:01 0:00 grep --color=auto python3
Nginx反向代理
访问一个IP, 将请求分发到上面的四个服务中
nginx参考文档
https://www.cnblogs.com/LiuQizhong/p/11757420.html
https://besterwin.gitee.io/blogs/knowledge/middle/Nginx.html
http://nginx.org/en/docs/http/ngx_http_upstream_module.html
安装pcre和nginx
源码包安装
nginx配置文件
user root;
worker_processes 5;events {worker_connections 1024;use epoll;
}http{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;
}server {listen 80 default_server;listen [::]:80 default_server;server_name _;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 httpsproxy_pass http://tornadoes;}
}
}
niginx基础命令
启动 sbin/nginx
重新加载配置 sbin/nginx -s reload
关闭 sbin/nginx -s stop
[python] tornado supervisor监控 以及 Nginx反向代理相关推荐
- Nginx反向代理与负载均衡等配置文件示例
Nginx反向代理于负载均衡等配置文件示例 Nginx.conf配置文件 worker_processes 8;events {worker_connections 1024; }http {incl ...
- nginx反向代理原理及配置详解
nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...
- Nginx反向代理多个应用时,通过BluePring使Flask支持二级路径(URL前缀)
1. 预期 最近陆续基于Nginx,完成了三个应用的部署: 应用A:<在Ngnix上部署Flask应用> 应用B:<PaddleOCR加载chinese_ocr_db_crnn_mo ...
- nginx反向代理tomcat提示failed (13: Permission denied) while connecting to upstream
2019独角兽企业重金招聘Python工程师标准>>> nginx反向代理tomcat提示failed (13: Permission denied) while connectin ...
- Nginx反向代理,负载均衡,redis session共享,keepalived高可用
本站点停止更新,请访问:blog.coocap.com 相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tom ...
- 【转】Nginx反向代理和负载均衡
原文链接:http://www.cnblogs.com/shuoer/p/7820899.html Nginx反向代理和负载均衡 环境说明 由于我使用的是windows系统,所以我用虚拟机虚拟出来了3 ...
- nginx反向代理缓存服务器构建
博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 代理服务可简单的分为正向代理和反向代理: ...
- nginx解决浏览器跨域问题_前端通过Nginx反向代理解决跨域问题
在前面写的一篇文章SpringMVC解决跨域问题,我们探讨了什么是跨域问题以及SpringMVC怎么解决跨域问题,解决方式主要有如下三种方式: JSONP CORS WebSocket 可是这几种方式 ...
- Nginx反向代理的使用
1. 常用服务器比较 apache: 功能完善,历史悠久,模块支持非常丰富,属于重量级产品,比较耗费内存.缺点:处理每一个php比较费资源,导致如果高并发时会耗费服务器资源无法处理更多请求. ligh ...
最新文章
- LiveData原理分析
- PHP创建XML文件讲解
- 【笔记】C++自学笔记系列02:类的组合与类的友元
- 局部敏感哈希(lsh)包安装成功
- 智能会议系统(33)---WebRTC学习之四:最简单的语音聊天
- 多语言跨平台远程过程调用【Avro】
- ref: 九大数据仓库方案特点比较
- .net Core 部署到 Linux
- dtw算法 c语言实现,dtw算法 - WELEN
- Jetson Nano 系列之:25FPS性能优化之路
- 一张纸厚度是多少毫米_一本书的厚度大约是多少,一张纸的厚度大约是十分之一毫米,一本书...
- 凡诺CMS 未授权访问+文件包含Getshell
- 修复Microsoft Edge上“无法到达此页面”错误的5种方法
- Vue2.x实现根据获取到的数据 显示不同性别图片
- 操作系统经典独木桥问题
- Android VOLD
- Android 集成友盟统计
- 影像组学平台助力又一位培训班学员论文见刊:基于机器学习的多参数MRI放射组学预测直肠癌患者新辅助放化疗后不良反应
- FPGA百秒内倒计时设计,基于小脚丫step-max10版本
- 华为手机使用应用沙盒动态修改cpu数据
热门文章
- 知识问答领域方法概述
- uniapp中拨打电话
- 常用正则验证 :手机号、验证码、密码、邮箱等验证
- 数据集大全:25个深度学习的开放数据集
- 瀑布模型与“V”模式开发模型有何异同?
- 字节三面:对于 Spring 你了解多少?如果你会了这 150 道题 ,吊打面试官岂不是洒洒水
- 【日本中部电力公司开始着手区块链事业】
- 既生 synchronized 何生 JUC 的 显式 locks ?
- 是谁发明了光纤?光纤的发明发展历史
- 文盲确定为不能用计算机,最初人们把文盲定义为 “不识字的人”;后来又把文盲确定为“看不懂现代信息符号、图表的人”;而现在联合国把文盲确定为“不能用计算机交流的人”。从哲学上看,这表明...