进程管理程序supervisor->gunicorn->flask

本文介绍如何使用Supervisor管理进程以确保服务稳定,并利用Gunicorn提升Flask应用的并发性能。Supervisor能够监控进程状态并自动重启异常退出的服务;Gunicorn作为高性能WSGI服务器,能显著增强应用性能。

1、supervisor:监控服务进程的工具;

web服务跑起来之后,为了保证服务的稳定性,需要加一个收获进程。supervisor非常好用,配置也简单方便,它是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。

nginx一般不会莫名其妙被关闭,但gunicorn是一个进程,完成有有可能因为一些原因被关闭或者阻塞,为了保证gunicorn进程,需要使用看护进程插件。这里使用supervisor来解决这个问题。

supervisor专门用户linux端进程管理,

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

启动主程序的命令传递:supervisor->gunicorn->flask

看着步骤很多,其实除了Gunicorn都不是必须的
https://www.cnblogs.com/andy0816/p/15371152.html

2、为什么使用Gunicorn,简单点就是为了并发。利用异步,提高性能。
Gunicorn是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server。
和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点。

目前Gunicorn只能运行在Linux环境中,不支持windows平台

部署 Flask 应用时,为什么会需要 gunicorn 或 uWSGI?

简单说就是 Flask自带的wsgi性能低下

只适合你开发调试的时候用,

线上你必须用Gunicorn+Nginx才能获得更强的性能,和更高的安全性

下面我说一些废话:

django、flask 都有自带的http server,

仅仅是方便我们开发的时候调试代码而已

这些开源框架的维护者不可能投入大量精力来优化自带的wsgi服务器,

他们需要把更多的精力投入到框架自身的优化中,

因为服务器方面已经有Gunicorn/uWSGI、nginx等优秀的开源解决方案

假设我们用自带的来部署到线上,会有什么问题呢?

性能很差,差到不好意思出门见人(如果你的网站就几十个人访问,那性能应该问题不大)
https://jiajunhuang.com/articles/2017_04_08-gunicorn.md.html
一般来说,起一个gunicorn作为服务器足以,但是有时候我们可以在Gunicorn前面挡一个 Nginx,原因如下:

Nginx可以缓存住请求,然后内网再次发起请求,并且可以配置负载均衡,如果一台机器 的多进程(Gunicorn就是多进程)吃不消的情况下,负载均衡可以把请求打向多个机器
Nginx替代Python处理静态文件的请求,以提高性能
很多时候一个机器上可能不止一个服务,需要像Nginx这样的web服务器做一次proxy_pass

https://juejin.cn/post/7034301809032331300

Python sorted() 函数 reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)

nginx是一个高性能的HTTP和反向代理服务器,可以用来处理静态文件和动态请求。gunicorn是一个Python WSGI HTTP服务器,可以将Flask应用程序部署到生产环境中。supervisor是一个进程控制系统,可以用来管理和监控进程。这三个工具可以一起使用来部署Flask应用程序。 以下是使用nginx,gunicornsupervisor部署Flask应用程序的步骤: 1. 安装nginx,gunicornsupervisor。 2. 编写Flask应用程序,并使用工厂函数构建应用程序对象。 3. 创建一个gunicorn配置文件,例如gunicorn.conf.py,指定工作进程数和线程数。 4. 使用gunicorn启动Flask应用程序,例如: ```shell gunicorn -c gunicorn.conf.py "my_project:create_app()" ``` 这将启动一个gunicorn进程,监听8000端口,并将请求转发到Flask应用程序。 5. 配置nginx,将请求转发到gunicorn进程。例如,在nginx.conf文件中添加以下内容: ```nginx server { listen 80; server_name example.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 这将将所有请求转发到gunicorn进程,并将请求头中的一些信息传递给Flask应用程序。 6. 使用supervisor管理gunicorn进程。例如,在supervisor.conf文件中添加以下内容: ```ini [program:gunicorn] command=/path/to/gunicorn -c /path/to/gunicorn.conf.py "my_project:create_app()" directory=/path/to/project user=user autostart=true autorestart=true stopasgroup=true killasgroup=true ``` 这将启动一个名为gunicorn进程,并在系统启动时自动启动该进程。如果该进程崩溃或被杀死,supervisor将自动重新启动该进程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值