Pythonweb框架和web服務(wù)器之間的關(guān)系

本篇內(nèi)容介紹了“Python web框架和web服務(wù)器之間的關(guān)系”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)與策劃設(shè)計,路橋網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:路橋等地區(qū)。路橋做網(wǎng)站價格咨詢:18982081108

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

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

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

Python web框架和web服務(wù)器之間的關(guān)系

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

一、web 框架

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

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

URL 路由

將輸入的 HTTP 請求匹配到特定的路由函數(shù),通過路由函數(shù)來調(diào)用對應(yīng)的 Python 代碼

請求和響應(yīng)對象

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

模板引擎

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

Web 服務(wù)開發(fā)

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

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

二、WSGI協(xié)議

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

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

三、uWSGI服務(wù)器

uWSGI 服務(wù)器也就是圖片中的所指的 WSGI 容器, 獨立 uWSGI 服務(wù)器相比傳統(tǒng) web 服務(wù)器,使用更少的資源,并提供比較高的性能  。Python 中的 uWSGI 服務(wù)器應(yīng)用最廣的主要包含以下幾個:

Gunicorn

Gunicorn (Green Unicorn,綠色獨角獸) 是一個純 Python WSGI 服務(wù)器,用來支持 Python 應(yīng)用。不像其他  Python web 服務(wù)器,它有周全的用戶界面,十分易于使用和配置。

Gunicorn 具有合理的默認配置。然而,其他一些像 uWSGI 這樣的服務(wù)器相較而言過于可定制化,因此更加難以高效使用。

Gunicorn 是如今新 Python web 應(yīng)用程序的推薦選擇。

Waitress

Waitress 是一個純 Python WSGI 服務(wù)器,聲稱具備 “非常高效的性能”。它的文檔不是很詳細,但它確實提供了一些很好的而 Gunicorn  沒有的功能(例如 HTTP 請求緩沖)。

Waitress 在 Python Web 開發(fā)社區(qū)中越來越受歡迎。

uWSGI

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

四、uwsgi 協(xié)議

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

五、Web 服務(wù)器端

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

Nginx

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

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

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

“Python web框架和web服務(wù)器之間的關(guān)系”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

網(wǎng)頁名稱:Pythonweb框架和web服務(wù)器之間的關(guān)系
本文路徑:http://bm7419.com/article40/ipdceo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站策劃移動網(wǎng)站建設(shè)、網(wǎng)站排名、建站公司Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營