安装和配置gunicorn

文章介绍了如何安装和配置Gunicorn,包括设置绑定地址、日志文件、进程数等参数。同时,讲解了如何将Flask的logger与Gunicorn的日志进行整合,确保在Gunicorn的error.log中可以看到Flask的日志输出。此外,讨论了不同worker_class的特性,如sync和gevent,强调了它们在并发处理和资源消耗上的差异。
摘要由CSDN通过智能技术生成

安装gunicorn

pip install gunicorn

// windows平台似乎不支持gunicorn

配置

配置文件要是.py结尾的
比如 gunicorn.conf.py
可以和flask的app.py放在同一目录下
配置参数说明

示例:

import multiprocessing
bind = '127.0.0.1:5000'  # 原来的flask的运行地址
# 访问日志和错误日志
accesslog = './logs/access.log' 
errorlog = './logs/error.log'
workers = multiprocessing.cpu_count() * 2 + 1 # 进程数量
 
backlog = 2048 # 未决连接的最大数量,即等待服务的客户的数量。默认2048个,一般不修改
worker_connections = 1000 # 最大客户端并发数量,默认情况下这个值为1000。
#worker_class = "gevent"
daemon = False # 是否以守护进程启动,默认false;
timeout = 50
debug = True
#debug = False
proc_name = 'app_name'

启动命令

gunicorn app:app -c gunicorn.conf.py

flask logger与gunicorn日志整合

在app.py中添加以下代码

if __name__ != '__main__':
    # 如果不是直接运行,则将日志输出到 gunicorn 中
    gunicorn_logger = logging.getLogger('gunicorn.error')
    app.logger.handlers = gunicorn_logger.handlers
    app.logger.setLevel(gunicorn_logger.level)

在gunicorn的error.log里就可以看到flask logger输出的日志

worker class

sync: 默认的工作进程类,也称为同步工作进程。每个工作进程都是单线程的,采用同步阻塞方式处理请求。当请求处理时间较长时,会阻塞其他请求的处理,不适合高并发或耗时较长的请求。
默认的、最简单的worker模式,是同步模式。

每个worker进程,一次只处理一个请求;如果此时又有其他请求被分配到这个worker进程,那只好被阻塞了,要先等第一个请求完成 。并且,一个请求一个进程,并发时,显然很占CPU和内存。

因此,只适合在访问量不大、CPU密集而非I/O密集的情形。

不过也不是没有好处;好处是,即使一个worker进程crash了,也只会影响一个请求。

gevent: 使用gevent库的工作进程类。gevent是基于协程的并发库,可以处理更多的并发连接。它利用非阻塞I/O和事件循环来实现高效的并发处理。
异步worker,能同时处理不止一个请求,就不会出现上面同步worker那样,一个请求就把后续请求都block阻塞住的情况了。
但是似乎不能用于python的mysql操作,只能用同步。。 开异步高并发就一直出mysql的各种error

参考:https://www.cnblogs.com/shengulong/p/7202294.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值