python web下的伺服器結構——WSGI容器、Nginx、Flask之間的關係
python web下的應用結構主要為:
從下往上開始介紹:
客戶端:瀏覽器或者app。
web伺服器:Web伺服器是指駐留於因特網上某種型別計算機的程式。當Web瀏覽器(客戶端)連到伺服器上並請求檔案時,伺服器將處理該請求並將檔案傳送到該瀏覽器上,附帶的資訊會告訴瀏覽器如何檢視該檔案(即檔案型別)。伺服器使用HTTP(超文字傳輸協議)進行資訊交流,這就是人們常把它們稱為HTTP伺服器的原因。
嚴格意義上Web伺服器只負責處理HTTP協議,用於處理靜態頁面的內容。而動態內容需要通過WSGI介面交給應用伺服器去處理。
Web伺服器包括Nginx,Apache,IIS等。而優秀的web伺服器在接收http請求時,還可以做負載均衡和反向代理等工作。
WSGI容器:常見的WSGI容器有Gunicorn,uWSGI等。web框架和web伺服器之間需要通訊,這時候需要設計一套雙方都遵守的藉口。PEP3333指出,WSGI(Web Server Gateway Interface)是WEB伺服器和web框架或web應用之間建立的一種簡單通用的介面規範。有了wsgi這份介面規範,在web開發的過程中,能更加自由的選擇伺服器端和框架;在伺服器端和框架的開發過程能夠分離開來,不用過多的考慮雙方具體的實現,使得伺服器端和框架開發者能夠專心自己領域的開發工作。而WSGI容器就是根據這套介面寫出來的。WSGI容器的作用就是根據web伺服器傳遞而來的引數構建一個讓WSGI應用成功執行的環境,例如request,而且還得把WSGI應用上處理好的結果返回給web伺服器。此外WSGI容器也叫應用伺服器。
注: 一般應用伺服器都整合了web伺服器,主要是為了除錯方便,出於效能和穩定性考慮,並不能在生產環境中使用。
web框架:作用主要是方便我們開發 web應用程式,HTTP請求的動態資料就是由 web框架層來提供的。常見的 web框架有Flask,Django,Tornado等,而Tornado不光是一個web框架,還實現了WSGI容器的功能。
這裡做個補充記錄:
都知道Flask是一個web框架,而且Flask是基於werkzeug開發的,那werkzeug是什麼呢?
Werkzeug是一個WSGI工具包,他可以作為一個Web框架的底層庫。這裡稍微說一下, werkzeug 不是一個web伺服器,也不是一個web框架,而是一個工具包,官方的介紹說是一個 WSGI 工具包,它可以作為一個 Web 框架的底層庫,因為它封裝好了很多 Web 框架的東西,例如 Request,Response 等等。使用它可以減輕web框架開發工作量。我看過werkzeug的原始碼後發現,werkzeug也實現了WSGI容器的功能,而且利用python/http/server.py庫實現了一個簡易的http伺服器。因此在除錯的時候可以直接使用app.run()把伺服器給執行起來。
相關文章
- 如何理解Nginx, WSGI, Flask之間的關係NginxFlask
- 如何理解Nginx、uWSGI和Flask之間的關係?NginxFlask
- Flask初探之WSGIFlask
- PHP-FPM,Nginx,FastCGI 之間的關係PHPNginxAST
- Oracle資料庫儲存結構之間的關係Oracle資料庫
- 網站和伺服器之間的關係網站伺服器
- 系統呼叫lseek和核心file結構體之間的關係結構體
- 基於Python的web架構之Tornado+FlaskPythonWeb架構Flask
- FAILGROUP和REDUNDANCY之間的關係關係!AI
- 類之間的關係
- Web3和元宇宙之間的關係Web元宇宙
- Python web離不開的WSGIPythonWeb
- 【java】類之間的關係Java
- 還搞不清Spring 與 Spring MVC 容器之間的關係?SpringMVC
- 關於 Flask Web 開發的個人小結FlaskWeb
- 資料結構與演算法之間有何關係?資料結構演算法
- 常見Web技術之間的關係,你瞭解多少?Web
- Python Web 部署: 使用 flask + gunicorn + supervisor + nginxPythonWebFlaskNginx
- 容器、容器雲和容器化PaaS平臺之間究竟是什麼關係?
- Python中怎樣改變集合之間的關係?Python
- Window、WindowManager、View 之間的關係View
- ODS與DW之間的關係
- UML中類之間的關係
- tablespace和datafile之間的關係
- 不同層之間的物件關係物件
- 資料結構之資料、資料元素、資料項、資料物件之間的關係資料結構物件
- 使用flask開發RESTful架構的api伺服器端(5)–部署flask應用到nginxFlaskREST架構API伺服器Nginx
- 前端建構函式、原型、例項物件之間的關係前端函式原型物件
- Python和人工智慧之間存在怎樣的關係?Python人工智慧
- Window, WindowManager和WindowManagerService之間的關係
- git、github、gitlab之間的關係GithubGitlab
- UML類圖--類之間的關係
- Activity、View、Window之間關係的分析View
- QT中類之間的關係圖QT
- .Net Framework各版本之間的關係Framework
- 類與類之間的基本關係
- 利用Python Flask構建Web網站PythonFlaskWeb網站
- python web 部署:nginx + gunicorn + supervisor + flask 部署筆記PythonWebNginxFlask筆記