gunicorn与gevent对flask项目进行部署总结

引言

Flask,webpy,Django都带着 WSGI server,当然性能都不好,自带的web server 更多的是测试用途。线上发布时,则使用高性能的 wsgi server或者是联合nginx做uwsgi 。
greenlet是一个轻量级的协程库。gevent是基于greenlet的网络库。
guincorn是支持wsgi协议的http server,gevent只是它支持的模式之一 ,是为了解决django、flask这些web框架自带wsgi server性能低下的问题。它的特点是与各个web框架结合紧密,部署特别方便。

以上引用自用gunicorn+gevent启动Flask项目 中的开头,其实在此之前我是不知道这些东西的,因为项目需求需要部署,所以我才去了解并记录一下使用blog,所以以下是我的总结。

gunicorn安装和使用

首先我们需要通过pip安装gunicorn服务,命令为:

 pip install gunicorn

在这里插入图片描述
这里我直接在pycharm提供的terminal终端中进行安装,安装成功后就可以进行相关配置了。

这里我列举出一些比较常用的命令与参数:

参数介绍参数说明
-c / --configCONFIG,Gunicorn配置文件路径
-b / --bindADDRESS,Gunicorn绑定服务器套接字,Host形式的字符串格式。Gunicorn可绑定多个套接字
–backlog未决连接的最大数量,即等待服务的客户的数量,必须是正整数,一般不怎么用
-w / --workersINT,用于处理工作进程的数量,为正整数,默认为1。worker推荐的数量为当前的CPU个数*2 + 1
-k / --worker-class要使用的工作模式,默认为sync,同样还可以使用的有eventlet,gevent,tornado,gthread和gaiohttp
–access-logfile要写入的访问日志目录
–error-logfile / --log-file要写入错误日志的文件目录
threads处理请求的工作线程数,使用指定数量的线程运行每个worker。为正整数,默认为1

上述应该算是比较常用的命令了,其它的我还暂时没用过,以上的说明都摘自Gunicorn-配置详解,其中很多的配置信息其实可以做成一个config配置文件,放在当前项目环境下的根目录下面,比如我做了一个gun.conf文件,我直接将上述所有的配置信息写进了该文件中,那么到时候需要调用的时候就是改变注释来选择功能,这里的一部分配置信息为:

#监听本机的5000端口  
bind='0.0.0.0:8081'  
#开启4个进程  
workers=4
#线程
#threads=8000
keepalive=1
#在keep-alive连接上等待请求的秒数,默认情况下值为2。一般设定在1~5秒之间。
daemon=True
worker_connections=8048
#worker_connections最大客户端并发数量,默认情况下这个值为1000。此设置将影响gevent和eventlet工作模式
graceful_timeout=0
#graceful_timeout优雅的人工超时时间,默认情况下,这个值为30。收到重启信号后,工作人员有那么多时间来完成服务请求。在超时(从接收到重启信号开始)之后仍然活着的工作将被强行杀死
limit_request_line=8048
#limit_request_line HTTP请求行的最大大小,此参数用于限制HTTP请求行的允许大小,默认情况下,这个值为4094。值是0~8190的数字。此参数可以防止任何DDOS攻击
backlog=8048
#工作模式为gevent  
worker_class="gevent"  
debug=True  
chdir = '/usr/test/1234/'
proc_name='gunicorn.pid'  
#记录PID  
pidfile='debug.log' 
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"' 
#设置gunicorn访问日志格式,错误日志无法设置
errorlog = "./errlog"
accesslog = "./logs"  

另外关于这些参数,其实我们还可以在终端输入gunicorn -h 来显示,然后就能看到全部的命令,因为我上一张图片是在Windows下的,但gunicorn会报错,说没有fcnl模块,然后看资料后发现即使有了这个模块,结果还是一样,所以我直接拿服务器看了,如下:
在这里插入图片描述
然后以上便是gunicorn的常用基本配置以及技巧。

部署flask项目

当我们将上述环境还有文件都配置好后,进入服务器,如果上述代码没有绑定端口号,这里可以用命令去绑定一下。然后我们就进入当前python项目环境目录下,因为我服务器之前已经安装好了python,这里就不演示安装了。相应的命令为:

ps aux | grep gunicorn   # 查看当前有没有启动gunicorn的进程,如果有就kill掉

kill -9 编码    # 杀死相应进程

gunicorn -k gevent -c gun.conf 项目文件:项目名	# 用gunicorn启动项目

在这里插入图片描述
上述因为在初始配置中我们设置了4个worker,所以上述才会显示有四个进程,然后可以kill掉再重新启动,我这里就不演示了,主要说明一下项目文件即是主程序的运行入口,我们在哪个文件中能启动项目,那么就是用它,也可以说是main函数在的地方,比如我这里文件叫answermain,然后flask的项目一般是以app来实例一个对象,所以一般项目名都是app。
在这里插入图片描述
所以至此,部署已经成功了,我们就可以访问设置的端口进行查看,然后这里基本不会有什么比较大的bug,当下次如果我们需要加上Nginx的时候,那个时候或许就会有问题了,另外下一篇我会从Nginx安装到部署做做记录,这里先留一个伏笔

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

submarineas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值