网络基础:WSGI、CGI、Fastcgi、mode_python、mode_wsgi是什么?Python Web Frameworks / WSGI / CGI / FastCGI的工作流程?

本文详细介绍了webserver、WSGI、CGI、FastCGI以及mode_wsgi的概念和工作流程。内容涵盖了webserver的作用、动态与静态webserver的区别,以及WSGI作为Python Web编程的标准接口如何统一编程接口和促进中间件的发展。同时,文章对比了CGI、FastCGI和WSGI的优缺点,解释了它们在不同场景下的应用。最后,文章讨论了mod_wsgi在Apache中的角色及其两种工作模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

一、webserver、software、WSGI、CGI、Fastcgi是什么?

1、什么是webserver

1.1 webserver的作用

1.2 webserver怎么工作的?

1.3 有哪些产品是webserver

1.4 static webserver  VS dynamic webserver

2、python software

3、WSGI、CGI、Fast CGI是什么?

3.1 WSGI是什么?

3.2 CGI是什么?

3.3 mode_python是什么?

3.4 FastCGI是什么?

3.5 mode_wsgi是什么?

3.6 WSGI是什么?

3.6 WSGI server 是什么?

二、WSGI / CGI / FastCGI的工作流程?

三、参考文章


前言

这篇文章知识满满,如果大家看到这篇文章时,也正好是你想要了解的内容,请好好看。

 

首先,先说点题外话。

1、这篇文章纯属是我总结的一些stack overflow、python官方文档、其他英文资料形成的。我想说的是:有能力阅读英文的,直接去阅读英文资料。网上查阅中文的资料(比如优快云)绝大多数就是浪费自己的时间。没有能力阅读英文的,逼着自己去读,除非你一点英文都不懂,时间长了自然就能阅读英文了。

2、那么有人问,怎么找英文资料?有条件的直接google,没条件的上biying,biying有国际版和中文版,也可以很快的搜到优质的英文资源。百度搜索就不说了,自己尝试吧。

 

进入正题

为什么写这篇文章呢?这是我在看《python网络编程》第三版 这本书的时候,里面介绍到了4种基于python的架构模式,如下:

看到这张框架图时,我就有点蒙了。平时总是说wsgi、gunicorn、nginx,但是他们是怎么与python代码结合起来提供服务的呢?一查资料又引出了CGI、Fastcgi这些又是什么呢?

这篇文章就将这些问题讲透彻。当然,原英文文章讲的才是最好的,如果大家有兴趣还是去读原文。

 

一、webserver、software、WSGI、CGI、Fastcgi是什么?

1、什么是webserver

web服务器是使用HTTP(超文本传输协议)和其他协议来响应通过万维网发出的客户机请求的软件和硬件。web服务器的主要工作是通过存储、处理和发送网页给用户来显示网站内容。除了HTTP协议外,web服务器还支持SMTP (Simple Mail Transfer Protocol,简单邮件传输协议)和FTP (File Transfer Protocol,文件传输协议),用于电子邮件、文件传输和存储。

1.1 webserver的作用

网络服务器用于网络托管,或为网站和基于Web的应用程序托管数据。如下图所示。

通俗的可以这样理解:

Web服务器提供响应。他们坐在那里,耐心地等待,然后毫无预兆地,突然:

  • 客户端进程发送请求。客户端进程可以是一个web服务器,一个机器人,一个移动应用程序,等等。他只是个“客户端”
  • web服务器接收到这个请求
  • 然后服务器会交给一个黑盒子运行一些程序
  • web服务器向客户端返回一些信息
  • Web服务器再次闲置
  • 继续服务

1.2 webserver怎么工作的?

当我们在浏览器上发起一个请求,到webserver返回给我们内容,到底经历了什么呢?

比如谷歌Chrome或Firefox,需要一个托管在网络服务器上的文件,浏览器会通过HTTP请求该文件。当请求被web服务器接收时,HTTP服务器将接受请求,找到内容并通过HTTP将其发送回浏览器。

更具体地说,当浏览器从web服务器请求页面时,该过程将遵循一系列步骤。首先,用户将在网页浏览器的地址栏中指定一个URL。网络浏览器将获得域名的IP地址——要么通过DNS(域名系统)翻译URL,要么在其缓存中搜索。这将把浏览器带到一个web服务器。然后浏览器将通过HTTP请求从web服务器请求特定的文件。web服务器将响应,再次通过HTTP向浏览器发送所请求的页面。如果请求的页面不存在或出现错误,web服务器将响应一个错误消息。浏览器将能够显示该网页。

由于websever可以托管程序,经常被用于一下用途:

  • 收发电子邮件;
  • 下载文件传输协议(FTP)文件请求;和
  • 建立和发布网页

1.3 有哪些产品是webserver

webserver其实就是一个软件(software),这个软件也是用我们平时用的语言所写的,最出名的就是nginx、Apache HTTP Server。以下为常见的web server。

  • Apache HTTP server:由Apache软件基金会开发,它是一个免费和开源的web服务器,适用于Windows, Mac OS X, Unix, Linux, Solaris和其他操作系统;它需要Apache许可。
  • Microsoft Internet Information Services (IIS):由微软为微软平台开发;它不是开源的,但是被广泛使用。
  • Nginx:一个流行的开放源码web服务器,因为它的资源利用率和可伸缩性很低。由于其事件驱动的体系结构,它可以处理许多并发会话。Nginx也可以用作代理服务器和负载均衡器。
  • Lighttpd:FreeBSD操作系统自带的免费网络服务器。它被认为是快速和安全的,同时消耗更少的CPU功率。
  • Sun Java System Web Server:Sun Microsystems提供的免费网络服务器,可以在Windows、Linux和Unix上运行。它有很好的设备来处理大中型网站。

web server它会等待request返回响应,但是注意:

Web服务器就是:服务器。他们对内容一无所知,他们更不会准备内容,对用户一无所知,实际上除了等待请求的到来和可靠地回复之外什么都不知道。

你选择的网络服务器应该反映你的交付偏好(比如你是觉得nginx好用,而不用apache),而不是你的软件(也就是你基于代码框架写的 web 程序)。你的we

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值