WSGI的“前世今生”

前面有一篇文章介绍了WSGI接口规范,这里把与WSGI相关的一系列协议与规范进行了梳理,可以更好的理解WSGI的概念。本文章涉及到的相关内容有:

  1. cgi
  2. Fastcgi
  3. WSGI【mod_wsgi】
  4. uWSGI/uwsgi

1、cgi

cgi全称是"公共网关接口"(Common Gateway Interface),它是一个古老的通信接口协议;可以适用于所有的脚本语言。其工作方式是当用户有请求到达时,前端的WEB服务器会启动一个cgi的进程(该进程的启动文件在WEB服务器的配置文件中预先进行了配置),并把请求相关的信息【path、header】传递给cgi进程。cgi进程执行完之后返回对应html内容给WEB服务器,WEB服务在返回给浏览器。

优点:
支持所有语言、跨平台

缺点:
开销大、并发处理能力低

2、Facecgi

Fastcgi顾名思义,是cgi的快速版本;即原理与cgi类似,但比Fastcgi要更快。原因是使用了新的响应和通信机制。与cgi的fork_and_exec模式不同,fastcgi使用的是类pre-fork的模式。它会在WEB服务器刚启动的时候预先启动若干常驻进程,当用户有请求需要处理时,直接从常驻进程中选取一个来执行即可;因为它无需反复的启动和销毁进程,所以在效率上cgi更快。
另外,Fastcgi会启动一个master管理进程,负责管理启动和管理Fastcgi的worker进程;当有新的用户请求过来,master会选择一个woker来处理该请求;与worker的通信是基于TCP/IP的,所以可以支持跨机器部署WEB环境。

优点:
处理能力提高
支持跨服务器通信

缺点:
并发能力还是有限
没有统一的接口规范

3、WSGI

WSGI则是Python专有的一个接口规范协议。它没有具体的实现,只是规定了具体的规范内容。它的出现让WEB服务器与WEB应用之间的通信有了规范可参照。只要符合WSGI规范的WEB服务器与WEB应用都可以进行轻易的替换,大大降低的后期的运维难度。
同时WSGI的通信方式是接口调用,所以它支持多进程、多线程等方式来处理用户请求,从而进一步提高了并发效率。

优点:
规范了接口定义,达到程序解耦的目的
轻松支持多进程,多线程

缺点:
不支持跨服务器通信

4、uWSGI

uWSGI是一个WSGI服务器,即uWSGI是一个实现了WSGI规范的服务器,它可以与支持WSGI接口的app进行通信。另外uWSGI服务器还实现了uwsgi、http协议,这2个协议主要与WEB服务器进行通信。比较常用的一个uWSGI服务器搭建架构如下:


优点:
由于使用uwsgi协议,其通信效率更好,并发处理能力更强

缺点:
不支持跨服务器通信


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

上帝De助手

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

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

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

打赏作者

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

抵扣说明:

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

余额充值