成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文讀懂Python web框架和web服務器之間的關系

開發 后端
我們都知道 Python 作為一門強大的語言,能夠適應快速原型和較大項目的制作,因此被廣泛用于 web 應用程序的開發中。

 [[281342]]

我們都知道 Python 作為一門強大的語言,能夠適應快速原型和較大項目的制作,因此被廣泛用于 web 應用程序的開發中。

在面試的過程中,大家或多或少都被問到過這樣一個問題:一個請求從瀏覽器發出到數據返回都經歷過哪些過程?

要回答這個問題,首先你需要對 HTTP 協議、web框架、服務器等底層知識有一定的儲備量,同時需要對 web 框架和服務器之間的關聯有一定的了解,這里有張圖上面詳細的標明它們之間的聯系。

 

這么多 wsgi 是不是有點懵逼?看不明白沒有關系,下面我會帶大家順著圖片里面的順序一步一步來搞懂里面的概念,厘清它們之間的關系

一、web 框架

在 Python 有很多 web 框架,其中常見的像 Django、Flask、Tornado 、sanic 等,可能有些人對 sanic 不是很熟悉,這里簡單說幾句,它的用法和 Flask 很相似,但是它支持 async/await 異步并發編程,所以相對來說性能更高。這里就不對這些框架作比較了,因為這不是我們今天的重點!

熟悉的朋友都知道 Web 框架包含一系列庫和一個主要的處理器 (handler),這樣你就能夠構建自己的代碼來實現 Web 應用 (比如說一個交互式的網站)。大多數 web 框架包含模式和工具,能實現以下功能:

URL 路由

將輸入的 HTTP 請求匹配到特定的路由函數,通過路由函數來調用對應的 Python 代碼

請求和響應對象

Python 中的大多的 web 框架都幫我們封裝好了來自用戶發送的 HTTP 請求 Request,同時也提供了發送給用戶瀏覽器的 Response 對象

模板引擎

能夠將實現應用的 Python 代碼邏輯和其要產生輸出的 HTML (或其他的) 分離開,例如比較知名的 Jinja2 模板引擎。它使用基于文本的模板語言,因此可以用來生成任何類型的標記,而不僅僅是 HTML。它允許定制過濾器、標簽、測試和全局變量

Web 服務開發

除了上述之外,單單一個 web 框架并不能支撐我們應用上的服務,需要在開發機上運行 HTTP 服務器,從而快速開發;這就需要涉及到 web 框架和服務器之間的通信等問題。

好在 Python 給我們提供了這樣的協議接口,也就是我們常說的 WSGI 協議!下面來了解一下什么是 WSGI 。

二、WSGI協議

Web 服務網關接口 (簡稱為 "WSGI") 是一種在 Web 服務器和 Python Web 應用程序框架之間的標準接口。通過標準化 Web 服務器和 Python web 應用程序框架之間的行為和通信,WSGI 使得編寫可移植的的 Python web 代碼變為可能,使其能夠部署在任何符合 WSGI 的 web 服務。

有了 WSGI 協議,我們就不需要為每一個 web 框架去搞一套協議,因為基本上所有的Python web 框架都支持這個協議。

三、uWSGI服務器

uWSGI 服務器也就是圖片中的所指的 WSGI 容器, 獨立 uWSGI 服務器相比傳統 web 服務器,使用更少的資源,并提供比較高的性能 。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 、傳遞環境變量等。

四、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 協議的知識,這部分也是在面試中經常被問到的,這里就不做贅述了。

責任編輯:華軒 來源: Python編程與實戰
相關推薦

2023-11-27 17:35:48

ComponentWeb外層

2019-10-09 16:14:30

Web服務器Tomcat

2023-08-01 19:11:05

瀏覽器本地存儲

2019-04-24 15:13:16

Web服務器應用服務器Web容器

2022-09-21 09:04:07

Python裝飾器

2022-04-12 10:34:05

Web框架方案

2017-09-20 10:22:15

Web服務器容器

2020-01-07 11:09:04

Web服務器容器

2016-11-02 13:33:43

2018-06-06 10:35:14

架構優劣勢選型

2023-12-22 19:59:15

2021-08-04 16:06:45

DataOps智領云

2023-12-10 14:59:53

2019-08-20 08:56:18

Linux設計數據庫

2019-09-20 09:12:03

服務器互聯網TCP

2024-05-27 00:45:00

2009-01-16 14:37:57

TomcatWeb服務器應用服務器

2020-12-29 09:56:29

瀏覽器緩存HTTP

2022-08-01 14:59:57

Web前端后端

2024-04-10 13:50:41

CentOSUbuntu操作系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精品99久久久久久久久 | 日韩在线视频网址 | 精品国产一区二区三区久久久久久 | 国产一区二区在线观看视频 | 亚洲网站观看 | 国产一区三区在线 | 亚洲福利一区二区 | 欧美成人第一页 | 一区二区三区四区在线 | 久久久欧洲 | 成人网av | 99视频入口 | 国产乱码精品1区2区3区 | 久久伊人影院 | 亚洲国产一区二区视频 | 日韩有码一区 | 国产精品久久久久久久午夜片 | 欧美日韩中文国产一区发布 | 亚洲国产中文字幕 | 亚洲 自拍 另类 欧美 丝袜 | 高清视频一区二区三区 | 成人欧美一区二区 | 久久久一区二区三区 | 成人在线观看黄 | 黄频视频 | 欧美一区二区三区 | 免费三级网 | 欧美一区2区三区4区公司 | 99热.com | 视频一区二区国产 | 99精品一区二区三区 | 亚洲午夜av久久乱码 | 久久久久久久久久久久久久av | 亚洲欧美精品在线 | 日本久久精品视频 | 在线一区 | 国产精产国品一二三产区视频 | 成人精品影院 | 久久精品综合 | 韩国精品在线 | 成人日批视频 |