uwsgi模式_一篇就弄懂WSGI、uwsgi和uWSGI的区别

本文介绍了WSGI(Web Server Gateway Interface)的基本概念,接着阐述了uwsgi协议与uWSGI服务器的区别。uWSGI不仅支持uwsgi协议,还支持WSGI和其他协议,常用于Django项目生产环境,以提高并发性能。文中给出了uwsgi的安装方法及ini配置文件示例,包括关键配置参数的解释。
摘要由CSDN通过智能技术生成

引言

最近基于Django Web框架在开发一个后端项目,在Web Server和Django应用程序交互的过程中总会碰到本文题目提及到的几个概念,笔者特意花了点时间研究了下,为方便以后温习特在此记录一下。

WSGI

英文全称:Web Server Gateway Interface,Web服务网管接口,简单来说它是一种Web服务器和应用程序间的通信规范。

uwsgi

uwsgi是一种通信协议,不过跟WSGI分属两种东西,该协议下速度比较快。

uWSGI

uWSGI是一个Web Server,并且独占uwsgi协议,但是同时支持WSGI协议、HTTP协议等,它的功能是把HTTP协议转化成语言支持的网络协议供python使用。

uwsgi的使用

在做Django项目时,一般测试开发我们直接用Django内嵌的Web Server即可,但是如果项目要上生产环境,考虑并发等性能时,我们可能需要uwsgi和nginx,下面只说明uwsgi的常用用法,至于nginx的配置笔者后续准备专门写一篇博文来讲。

1. 安装

pip install uwsgi

2. 配置

uwsgi执行一般有两种方式:命令行和文件配置,但是命令行可能需要识记很多参数,因此采用文件配置是更通用的做法,文件格式支持很多种比如ini、xml、yaml等,笔者建议还是采用比较简单key-value形式ini模式,下面给出一个简单的uwsgi ini配置实例:

[uwsgi]

socket = 127.0.0.1:8001

master = false

chdir = /var/www/cmpvirtmgr/

module = cmpvirtmgr.wsgi

home = /var/www/env

workers = 2

reload-mercy = 10

vacuum = true

max-requests = 1000

limit-as = 512

buffer-size = 30000

pidfile = /etc/uwsgi/uwsgi.pid

执行:uwsgi --ini /path/to/uwsgi.ini

参数解释:

socket:socket文件,也可以是地址+端口;

master:是否启动主进程来管理其他进程;

chdir:项目的根目录;

module:wsgi文件相对路径;

home:虚拟环境目录;

workers:开启的进程数量;

reload-mercy:设置在平滑的重启(直到接收到的请求处理完才重启)一个工作子进程中,等待这个工作结束的最长秒数;

vacuum:服务结束后时候删除对应的socket和pid文件;

max_requests:每个工作进程设置的请求上限;

limit_as:限制每个uwsgi进程占用的虚拟内存数目;

buffer_size:设置用于uwsgi包解析的内部缓存区大小;

pid_file:指定pid文件;

harakiri:请求的超时时间;

daemonize:进程后台执行,并保存日志到特定路径;如果uwsgi进程被supervisor管理,不能设置该参数;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值