了解Python框架与Web服务器之间的关系
Python是一种功能强大的语言,可以适应大型项目的快速原型制作和制作,因此被广泛应用于Web应用程序的开发中。
面试过程中,大家都或多或少被问到这样一个问题:浏览器的请求,数据返回经过什么流程?
要回答这个问题,首先要对HTTP协议、Web框架、服务器等底层知识有一定的储备。同时,你必须对Web框架和服务器之间的关系有一定的了解。这是一张包含详细信息的图片。表明它们之间的关系。
这么多wsgi你是不是有点困惑?如果你听不懂也没关系。我会按照图的顺序一步步带你理解概念并理清它们之间的关系
1。 Web框架
Python中的Web框架有很多,常见的有Django、Flask、Tornado、sanic等,有些人可能对sanic不太了解。这里简单说几句。它的用法和Flask很相似,但是支持async/await异步并发编程,所以性能比较好。更高。我不会在这里比较这些框架,因为这不是我们今天的重点!
熟悉的朋友都知道,Web 框架包含了许多库和一个主处理器(handler),以便你可以构建自己的代码来实现 Web 应用程序(例如交互式网站)。大多数 Web 框架都包含支持以下功能的模式和工具:
URL 路由
将传入的 HTTP 请求与特定路由函数匹配,并通过路由函数调用相应的 Python 代码
Python 中的请求和响应 Web 对象框架可以帮助我们封装用户发送的HTTP请求,还提供发送到用户浏览器的Response对象模板引擎
可以实现Python应用程序的代码逻辑与其作为输出产生的HTML(或其他)分离,比如著名的Jinja2模板引擎。它使用基于文本的模板语言,因此可用于生成任何类型的标记,而不仅仅是 HTML。它允许自定义过滤器、标签、测试和全局变量
Web服务开发
除上述之外,单个Web框架无法支持我们应用程序上的服务,必须在开发机器上运行HTTP服务器才能快速实现开发;这肯定涉及到Web框架和服务器之间的通信等问题。
幸运的是,Python为我们提供了这样的协议接口,也就是我们常说的WSGI协议!我们先来看看什么是WSGI。
2。 WSGI 协议
Web 服务网关接口(简称“WSGI”)是 Web 服务器和 Python Web 应用程序框架之间的标准接口。通过标准化 Web 服务器和 Python Web 应用程序框架之间的行为和通信,WSGI 使得编写可部署在任何符合 WSGI 的 Web 服务上的可移植 Python Web 代码成为可能。
有了 WSGI 协议,我们不需要为每个 Web 框架开发一个协议,因为几乎所有的 Python Web 框架都支持这个协议。
3。 uWSGI Server
uWSGI Server 是镜像中引用的 WSGI 容器。与传统的Web服务器相比,独立的uWSGI服务器使用更少的资源并提供最高的性能。 Python中使用最广泛的uWSGI服务器主要包括以下几种:
Gunicorn
Gunicorn(Green Unicorn,绿独角兽)是一个纯Python WSGI服务器,用于支持Python应用程序。与其他 Python Web 服务器不同,它具有全面的用户界面,并且非常易于使用和配置。
Gunicorn 有合理的默认配置。然而,其他一些服务器(例如 uWSGI)的可定制性太高,因此难以有效使用。
Gunicorn 是当今新 Python Web 应用程序的推荐选择。
Waitress
Waitress 是一个纯Python WSGI 服务器,号称拥有“非常高效的性能”。它的文档不是很详细,但它提供了一些 Gunicorn 没有的好功能(例如 HTTP 请求缓冲)。
Waitress 在 Python Web 开发社区中变得越来越流行。
uWSGI
你没有看错,又是uWSGI! uWSGI用于构建全栈托管服务。除了进程管理、进程监控等功能外,uWSGI还可以充当多种编程语言和协议的应用服务器——包括Python和WSIG。 uWSGI 可以作为独立的 Web 路由器运行,也可以在完整的 Web 服务器(例如 Nginx 或 Apache)后面运行。对于后者,Web服务器可以基于uwsgi协议配置uWSGI和应用程序操作。 uWSGI 的 Web 服务器支持允许动态配置 Python、传递环境变量等。
4。 uwsgi协议
uwsgi协议:与WSGI一样,是一种通信协议。它是Web服务器和uWSGI服务器之间的协议。它是uWSGI服务器的专有协议。它用于定义传输信息的类型。 (信息类型),每个uwsgi数据包的前4个字节是传输信息类型的描述,这与WSGI协议是两个不同的东西。
5。 Web服务器页面
Web服务器包括Nginx、Apache、IIS等。优秀的Web服务器在接收http请求时还可以进行负载均衡和反向代理。
Nginx
Nginx 是一个 Web 服务器和 HTTP、SMTP 等协议的反向代理。它以其高性能、相对简单性以及与许多应用程序服务器(例如 WSGI 服务器)的兼容性而闻名。
还具有负载均衡、基本身份验证、流媒体等实用功能。Nginx 被设计用于托管高负载网站并逐渐流行起来。所以我们一般使用Nginx来进行负载均衡和反向代理!
在没有弄清楚以上概念以及它们之间的关系的情况下,你当然还必须了解HTTP协议的知识。这部分在面试中也经常被问到,这里就不详细说了。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。