web 服务器与框架间的关系

O

web 服务器与框架间的关系

一:web框架

在 Python 有很多 web 框架,其中常见的像 Django、Flask、Tornado 、sanic 等

能实现以下功能:

URL路由:

将输入的 HTTP 请求匹配到特定的路由函数,通过路由函数来调用对应的 Python 代码

请求和响应对象

Python 中的大多的 web 框架都帮我们封装好了来自用户发送的 HTTP 请求 Request,同时也提供了发送给用户浏览器的 Response 对象

模板引擎

能够将实现应用的 Python 代码逻辑和其要产生输出的 HTML (或其他的) 分离开,例如比较知名的 Jinja2 模板引擎。

Web 服务开发中,仅仅上述无法支撑应用上的服务,需要在开发机上运行 HTTP 服务器,从而快速开发

web框架与服务器间的通信,需要WSGI协议

二:WSGI协议

Web 服务网关接口 (简称为 “WSGI”) 是一种在 Web 服务器和 Python Web 应用程序框架之间的标准接口。

三、uWSGI服务器

uWSGI 服务器也就是图片中的所指的 WSGI 容器

Python 中的 uWSGI 服务器应用最广的主要包含以下几个:

Gunicorn

是如今新 Python web 应用程序的推荐选择

Gunicorn (Green Unicorn,绿色独角兽) 是一个纯 Python WSGI 服务器,用来支持 Python 应用。不像其他 Python web 服务器,它有周全的用户界面,十分易于使用和配置。

Gunicorn 具有合理的默认配置。然而,其他一些像 uWSGI 这样的服务器相较而言过于可定制化,因此更加难以高效使用。

Waitress

Waitress 是一个纯 Python WSGI 服务器,声称具备 “非常高效的性能”。它的文档不是很详细,但它确实提供了一些很好的而 Gunicorn 没有的功能(例如 HTTP 请求缓冲)。

Waitress 在 Python Web 开发社区中越来越受欢迎。

uWSGI

uWSGI 用来构建全栈式的主机服务。除了进程管理、进程监控和其他功能外, uWSGI 也能作为一个应用服务器,适用于多种编程语言和协议 - 包括 Python 和 WSIG。uWSGI 既能当作独立的 web 路由器来运行,也能运行在一个完整 web 服务器(比如 Nginx 或 Apache )之后。对于后者,web 服务器可以基于 uwsgi 协议 配置 uWSGI 和应用的操作。uWSGI 的 web 服务器支持允许动态配置 Python 、传递环境变量等。

四、uwsgi 协议

uwsgi 协议:与 WSGI 一样是一种通信协议,它是 web 服务器 和 uWSGI 服务器之间的协议,一个 uWSGI 服务器的独占协议,它是用于定义传输信息的类型(type of information),每一个 uwsgi packet前4byte为传输信息类型的描述,与 WSGI协议 是两种东西。

五、Web 服务器端

Web 服务器包括 Nginx,Apache,IIS 等。而优秀的 web 服务器在接收 http 请求时,还可以做负载均衡和反向代理等工作。

Nginx

Nginx 是一个 web 服务器,并且是 HTTP 、SMTP 和其他协议的反向代理。它由其高性能、相对简洁以及对众多应用服务器 (比如 WSGI 服务器) 兼容而著名。

它也拥有便利的特性, 比如负载均衡、基本的认证、流等。Nginx 被设计为承载高负载的网站,并逐渐变得广为流行。所以我们一般用 Nginx来做还可以做负载均衡和反向代理!

当然除了厘清以上的概念及它们之间的关系之外,您还需要知道 HTTP 协议的知识,这部分也是在面试中经常被问到的,这里就不做赘述了。

均衡和反向代理!

当然除了厘清以上的概念及它们之间的关系之外,您还需要知道 HTTP 协议的知识,这部分也是在面试中经常被问到的,这里就不做赘述了。

转:https://www.cnblogs.com/2020-zhy-jzoj/p/13165227.html