文章目录

    • Supervisor
      • 简单的tornado
    • supervisor
      • 配置
      • 启动
    • 效果
  • Nginx反向代理
    • 安装pcre和nginx
    • nginx配置文件

Supervisor

Supervisor 是一个客户端/服务器系统,
允许其用户监视和控制类似UNIX的操作系统上的多个进程。

在Python服务宕机后可以自动重启

环境
CentOS7.9
python3.8
supervisor 4.1.0

supertvisor版本过低可能会报错
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反向代理相关推荐

  1. Nginx反向代理与负载均衡等配置文件示例

    Nginx反向代理于负载均衡等配置文件示例 Nginx.conf配置文件 worker_processes 8;events {worker_connections 1024; }http {incl ...

  2. nginx反向代理原理及配置详解

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

  3. Nginx反向代理多个应用时,通过BluePring使Flask支持二级路径(URL前缀)

    1. 预期 最近陆续基于Nginx,完成了三个应用的部署: 应用A:<在Ngnix上部署Flask应用> 应用B:<PaddleOCR加载chinese_ocr_db_crnn_mo ...

  4. nginx反向代理tomcat提示failed (13: Permission denied) while connecting to upstream

    2019独角兽企业重金招聘Python工程师标准>>> nginx反向代理tomcat提示failed (13: Permission denied) while connectin ...

  5. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    本站点停止更新,请访问:blog.coocap.com 相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tom ...

  6. 【转】Nginx反向代理和负载均衡

    原文链接:http://www.cnblogs.com/shuoer/p/7820899.html Nginx反向代理和负载均衡 环境说明 由于我使用的是windows系统,所以我用虚拟机虚拟出来了3 ...

  7. nginx反向代理缓存服务器构建

    博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 代理服务可简单的分为正向代理和反向代理: ...

  8. nginx解决浏览器跨域问题_前端通过Nginx反向代理解决跨域问题

    在前面写的一篇文章SpringMVC解决跨域问题,我们探讨了什么是跨域问题以及SpringMVC怎么解决跨域问题,解决方式主要有如下三种方式: JSONP CORS WebSocket 可是这几种方式 ...

  9. Nginx反向代理的使用

    1. 常用服务器比较 apache: 功能完善,历史悠久,模块支持非常丰富,属于重量级产品,比较耗费内存.缺点:处理每一个php比较费资源,导致如果高并发时会耗费服务器资源无法处理更多请求. ligh ...

最新文章

  1. LiveData原理分析
  2. PHP创建XML文件讲解
  3. 【笔记】C++自学笔记系列02:类的组合与类的友元
  4. 局部敏感哈希(lsh)包安装成功
  5. 智能会议系统(33)---WebRTC学习之四:最简单的语音聊天
  6. 多语言跨平台远程过程调用【Avro】
  7. ref: 九大数据仓库方案特点比较
  8. .net Core 部署到 Linux
  9. dtw算法 c语言实现,dtw算法 - WELEN
  10. Jetson Nano 系列之:25FPS性能优化之路
  11. 一张纸厚度是多少毫米_一本书的厚度大约是多少,一张纸的厚度大约是十分之一毫米,一本书...
  12. 凡诺CMS 未授权访问+文件包含Getshell
  13. 修复Microsoft Edge上“无法到达此页面”错误的5种方法
  14. Vue2.x实现根据获取到的数据 显示不同性别图片
  15. 操作系统经典独木桥问题
  16. Android VOLD
  17. Android 集成友盟统计
  18. 影像组学平台助力又一位培训班学员论文见刊:基于机器学习的多参数MRI放射组学预测直肠癌患者新辅助放化疗后不良反应
  19. FPGA百秒内倒计时设计,基于小脚丫step-max10版本
  20. 华为手机使用应用沙盒动态修改cpu数据

热门文章

  1. 知识问答领域方法概述
  2. uniapp中拨打电话
  3. 常用正则验证 :手机号、验证码、密码、邮箱等验证
  4. 数据集大全:25个深度学习的开放数据集
  5. 瀑布模型与“V”模式开发模型有何异同?
  6. 字节三面:对于 Spring 你了解多少?如果你会了这 150 道题 ,吊打面试官岂不是洒洒水
  7. 【日本中部电力公司开始着手区块链事业】
  8. 既生 synchronized 何生 JUC 的 显式 locks ?
  9. 是谁发明了光纤?光纤的发明发展历史
  10. 文盲确定为不能用计算机,最初人们把文盲定义为 “不识字的人”;后来又把文盲确定为“看不懂现代信息符号、图表的人”;而现在联合国把文盲确定为“不能用计算机交流的人”。从哲学上看,这表明...