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

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

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

 [[281342]]

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

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

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

 

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

一、web 框架

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

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

URL 路由

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

請求和響應對象

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

模板引擎

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

Web 服務開發(fā)

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

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

二、WSGI協(xié)議

Web 服務網關接口 (簡稱為 "WSGI") 是一種在 Web 服務器和 Python Web 應用程序框架之間的標準接口。通過標準化 Web 服務器和 Python web 應用程序框架之間的行為和通信,WSGI 使得編寫可移植的的 Python web 代碼變?yōu)榭赡埽蛊淠軌虿渴鹪谌魏畏?WSGI 的 web 服務。

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

三、uWSGI服務器

uWSGI 服務器也就是圖片中的所指的 WSGI 容器, 獨立 uWSGI 服務器相比傳統(tǒng) 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 開發(fā)社區(qū)中越來越受歡迎。

uWSGI

你沒有看錯,又是 uWSGI!uWSGI 用來構建全棧式的主機服務。除了進程管理、進程監(jiān)控和其他功能外, uWSGI 也能作為一個應用服務器,適用于多種編程語言和協(xié)議 - 包括 Python 和 WSIG。uWSGI 既能當作獨立的 web 路由器來運行,也能運行在一個完整 web 服務器(比如 Nginx 或 Apache )之后。對于后者,web 服務器可以基于 uwsgi 協(xié)議 配置 uWSGI 和應用的操作。uWSGI 的 web 服務器支持允許動態(tài)配置 Python 、傳遞環(huán)境變量等。

四、uwsgi 協(xié)議

uwsgi 協(xié)議:與 WSGI 一樣是一種通信協(xié)議,它是 web 服務器 和 uWSGI 服務器之間的協(xié)議,一個 uWSGI 服務器的獨占協(xié)議,它是用于定義傳輸信息的類型(type of information),每一個 uwsgi packet前4byte為傳輸信息類型的描述,與 WSGI協(xié)議 是兩種東西。

五、Web 服務器端

Web 服務器包括 Nginx,Apache,IIS 等。而優(yōu)秀的 web 服務器在接收 http 請求時,還可以做負載均衡和反向代理等工作。

Nginx

Nginx 是一個 web 服務器,并且是 HTTP 、SMTP 和其他協(xié)議的反向代理。它由其高性能、相對簡潔以及對眾多應用服務器 (比如 WSGI 服務器) 兼容而著名。

它也擁有便利的特性, 比如負載均衡、基本的認證、流等。Nginx 被設計為承載高負載的網站,并逐漸變得廣為流行。所以我們一般用 Nginx來做還可以做負載均衡和反向代理!

當然除了厘清以上的概念及它們之間的關系之外,您還需要知道 HTTP 協(xié)議的知識,這部分也是在面試中經常被問到的,這里就不做贅述了。

責任編輯:華軒 來源: Python編程與實戰(zhàn)
相關推薦

2023-11-27 17:35:48

ComponentWeb外層

2023-08-01 19:11:05

瀏覽器本地存儲

2019-10-09 16:14:30

Web服務器Tomcat

2019-04-24 15:13:16

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

2022-04-12 10:34:05

Web框架方案

2022-09-21 09:04:07

Python裝飾器

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

架構優(yōu)劣勢選型

2019-08-20 08:56:18

Linux設計數據庫

2019-09-20 09:12:03

服務器互聯(lián)網TCP

2022-08-01 14:59:57

Web前端后端

2023-12-22 19:59:15

2021-08-04 16:06:45

DataOps智領云

2022-09-21 16:56:16

設計模式微服務架構

2023-12-10 14:59:53

2024-05-27 00:45:00

2018-03-17 09:00:21

大數據 區(qū)塊鏈

2023-10-23 15:38:12

Spring 5開發(fā)
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品自产拍在线观看蜜 | 亚洲第一网站 | 鲁大师一区影视 | 91精品在线播放 | 国产午夜精品一区二区三区嫩草 | 亚洲三区在线播放 | 亚洲一区 中文字幕 | 国产精品一区久久久 | 国产日韩久久 | 欧美高清视频 | 一区二区三区亚洲精品国 | 一道本不卡 | 可以免费看的毛片 | 亚洲精品乱码久久久久久黑人 | 视频在线一区 | 国产一区二区电影网 | 日韩福利在线观看 | 久久久入口 | 粉嫩一区二区三区四区公司1 | 欧美一区二 | 午夜丰满寂寞少妇精品 | 精品久久久久久久久久久久久久 | 成人在线电影网站 | 永久av | 日韩免费成人av | 99亚洲精品 | 有码一区| 高清不卡毛片 | 日韩欧美操 | 亚洲成人精品一区二区 | 国产精品亚洲片在线播放 | wwwxxx日本在线观看 | 亚洲免费视频一区二区 | 欧洲一级毛片 | 精品视频导航 | 久久精品国产免费一区二区三区 | 特级丰满少妇一级aaaa爱毛片 | 夫妻午夜影院 | 日韩欧美在线精品 | 伊人春色在线观看 | 亚洲 中文 欧美 日韩 在线观看 |