Flask与FastAPi
FastAPI安装与使用
交互式文档
路径与查询参数
参数使用枚举
请求与响应
自定义响应状态码
中间件_计算回调时间
类型与模型
Flask安装与使用
Gunicorn(WSGI服务)
本文档使用MrDoc发布
返回首页
-
+
Gunicorn(WSGI服务)
2022年4月13日 08:53
admin
#资料 https://pypi.org/project/gunicorn/ --- #安装 pip install gunicorn #国内源安装 pip3 install gunicorn -i https://pypi.tuna.tsinghua.edu.cn/simple --- #启动(Flask) gunicorn main:app -b 0.0.0.0:8001 -w 4 #启动(FASTAPI) gunicorn main:app -b 0.0.0.0:8001 -w 4 -k uvicorn.workers.UvicornWorker ###参数: -D #守护启动 -c #配置文件 -w #进程数 -b #绑定运行的主机和端口 main:app #main:执行的python文件main.py, app:应用名称 -k uvicorn.workers.UvicornWorker #以 --- #以配置文件方式启动应用 ###编辑gunicorn.conf 文件,其内容如下: import multiprocessing # 并行工作进程数 核心数*2+1个 workers = multiprocessing.cpu_count() * 2 + 1 # 指定每个工作者的线程数 threads = 2 # 监听内网端口5000 bind = '127.0.0.1:5000' # 设置守护进程 daemon = 'true' # 工作模式协程 worker_class = 'gevent' #FastAPI时,使用uvicorn【重要注意】 # 设置最大并发量 worker_connections = 2000 # 设置进程文件目录 pidfile = '/var/run/gunicorn.pid' # 设置访问日志和错误信息日志路径 accesslog = '/var/log/gunicorn_access.log' errorlog = '/var/log/gunicorn_error.log' # 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置 loglevel = 'warning' ###启动应用: gunicorn -c gunicorn.conf main:app --- ##配置参数说明: --- ###bind -b ADDRESS, --bind ADDRESS #Gunicorn绑定服务器套接字,Host形式的字符串格式。Gunicorn可绑定多个套接字,如: gunicorn -b 127.0.0.1:8000 -b [::1]:9000 manager:app --- ###backlog --backlog 未决连接的最大数量,即等待服务的客户的数量。必须是正整数,一般设定在64~2048的范围内,一般设置为2048,超过这个数字将导致客户端在尝试连接时错误 --- ###workers -w INT, --workers INT #用于处理工作进程的数量,为正整数,默认为1。worker推荐的数量为当前的CPU个数*2 + 1。计算当前的CPU个数方法: import multiprocessing print multiprocessing.cpu_count() --- ###worker_class -k STRTING, --worker-class STRTING #使用寿命工作模式,默认为sync。可使用下面的常用的工作模式: sync eventlet: 需要下载eventlet >= 0.9.7 gevent: 需要下载gevent >= 0.13 tornado: 需要下载tornado >= 0.2 gthread gaiohttp:需要python 3.4和aiohttp>=0.21.5 uvicorn: 需要下载uvicorn(部署fastAPI时使用, 下面举个例子)(重要) =========================================================== # 举个例子(fastAPI) gunicorn example:app -w 4 -k uvicorn.workers.UvicornWorker ###工作模式选取: sync 底层实作是每个请求都由一个process处理。多进程模式,--workers参数,指定了工作进程的数量。 gthread 则是每个请求都由一个thread处理。多线程模式。 eventlet、gevent 底层则是利用非同步IO让一个process在等待IO回应时继续处理下个请求。协程模式。 uvicorn(重要) 使用FastAPI时使用 #IO受限,建议使用gevent或者asyncio #CPU受限,建议增加workers数量 #不确定内存占用,建议使用gthread #不知道怎么选择,建议增加workers数量 --- ###threads --threads INT #处理请求的工作线程数,使用指定数量的线程运行每个worker。为正整数,默认为1。 --- ###worker_connections --worker-connections INT #最大客户端并发数量,默认情况下这个值为1000。此设置将影响gevent和eventlet工作模式 --- ###max_requests --max-requests INT #重新启动之前,工作将处理的最大请求数。默认值为0。 --- ###timeout -t INT, --timeout INT #超过这么多秒后工作将被杀掉,并重新启动。一般设定为30秒 --- ###keepalive --keep-alive INT #在keep-alive连接上等待请求的秒数,默认情况下值为2。一般设定在1~5秒之间。 --- ###limit_request_line --limit-request-line INT #HTTP请求行的最大大小,此参数用于限制HTTP请求行的允许大小,默认情况下,这个值为4094。该值的范围为0~8190。此参数可以防止任何DDOS攻击 --- ###limit_request_fields --limit-request-fields INT #限制HTTP请求中请求头字段的数量。此字段用于限制请求头字段的数量以防止DDOS攻击,与limit-request-field-size一起使用可以提高安全性。默认情况下,这个值为100,这个值不能超过32768 --- ###limit_request_field_size --limit-request-field-size INT #限制HTTP请求中请求头的大小,默认情况下这个值为8190。值是一个整数或者0,当该值为0时,表示将对请求头大小不做限制 --- ###reload --reload #代码更新时将重启工作,默认为False。此设置一般用于开发,每当应用程序发生更改时,都会导致工作重新启动。 --- ###daemon --daemon #守护Gunicorn进程,默认False --- ###raw_env -e ENV, --env ENV #设置环境变量(key=value),将变量传递给执行环境,如: gunicorin -b 127.0.0.1:8000 -e abc=123 manager:app 在配置文件中写法: raw_env=["abc=123"] --- ###pidfile -p FILE, --pid FILE #设置pid文件的文件名,如果不设置将不会创建pid文件 --- ###worker_tmp_dir --worker-tmp-dir DIR #设置工作临时文件目录,如果不设置会采用默认值。 --- ###accesslog --access-logfile FILE #要写入的访问日志目录 --- ###errorlog --error-logfile FILE, --log-file FILE #要写入错误日志的文件目录。 --- ###loglevel --log-level LEVEL #错误日志输出等级。 支持的级别名称为: debug info warning error critical ---
分享到: