flask uwsgi Nginx 之間的關係

2021-08-25 17:15:09 字數 1305 閱讀 2087

總括來說,客戶端從傳送乙個 http 請求到 flask 處理請求,分別經過了 web 伺服器層,wsgi層,web框架層,這三個層次。

不同的層次其作用也不同,下面簡要介紹各層的作用

圖1:web伺服器,web框架與 wsgi 的三層關係

對於傳統的客戶端 - 伺服器架構,其請求的處理過程是,客戶端向伺服器傳送請求,伺服器接收請求並處理請求,然後給客戶端返回響應。在這個過程中,伺服器的作用是:

web伺服器是一類特殊的伺服器,其作用是主要是接收 http 請求並返回響應。提起 web伺服器大家都不會陌生,常見的 web伺服器有 nginx,apache,iis等。在上圖1的三層結構中,web伺服器是最先接收使用者請求的,並將響應結果返回給使用者。

web框架的作用主要是方便我們開發 web應用程式,http請求的動態資料就是由 web框架層來提供的。常見的 web框架有flask,django等,我們以 flask 框架為例子,展示 web框架的作用:

from flask import flask

def hello_world():

return 'hello world!'

if __name__ == '__main__':

wsgi 不是伺服器,也不是用於與程式互動的api,更不是真實的**,wsgi 只是一種介面,它只適用於 python 語言,其全稱為 web server gateway inte***ce,定義了 web伺服器和 web應用之間的介面規範。也就是說,只要 web伺服器和 web應用都遵守wsgi協議,那麼 web伺服器和 web應用就可以隨意的組合。

下面的**展示了 web伺服器是如何與 web應用組合在一起的

start_response('200 ok', [('content-type', 'text/html')])

return [b"hello world"]

值得指出的是,wsgi 是一種協議,需要區分幾個相近的名詞:

生產環境下的 web應用都不使用 cgi 了,cgi程序(類似 python 直譯器)針對每個請求建立,用完就拋棄,效率低下。wsgi 正是為了替代 cgi 而出現的。

說到這,我們基本理清了 wsgi 在 web伺服器與 web框架之間作用:wsgi 就像一條紐帶,將 web伺服器與 web框架連線起來。回到本文的題目,nginx 屬於一種 web伺服器,flask屬於一種 web框架,因此,wsgi 與 nginx、flask 的作用就不明而喻了。

原文出處:

flask uwsgi nginx 部署應用

一 防火牆 阿里雲伺服器開通埠 centos系統關閉防火牆 centos 7.0預設使用的是firewall作為防火牆,使用iptables必須重新設定一下 1 直接關閉防火牆 systemctl stop firewalld.service 停止firewall systemctl disable...

Flask uwsgi Nginx環境搭建

開源軟體準備 需要的軟體列表 setuptools 33.1.1.zip python 2.7.13.tgz pip 9.0.1.tar.gz nginx 1.10.3.tar.gz 軟體統一上傳到 usr local src 下,python是使用自己編譯的。python安裝 先安裝以下的軟體 如...

Flask uwsgi Nginx環境搭建

開源軟體準備 需要的軟體列表 setuptools 33.1.1.zip python 2.7.13.tgz pip 9.0.1.tar.gz nginx 1.10.3.tar.gz 軟體統一上傳到 usr local src 下,python是使用自己編譯的。python安裝 先安裝以下的軟體 如...