產品經理也能讀懂的技術:什麼是WSGI
題圖:Photo by Clay Banks on Unsplash
嘗試用最淺顯的方式來說明什麼是WSGI,據說產品妹子都讀懂了。
一個完整的 Web 應用包含兩部分,一個是伺服器程式(Server),一個是應用程式(Application),伺服器程式負責接收瀏覽器傳送過來的請求,應用程式負責處理具體的業務邏輯。 比如我基於 Django 框架開發一個部落格應用,部署在生產環境時會用 Gunicorn 或者 Uwsgi 作為伺服器程式。
Python 中 Web 框架非常多,Flask、Django、Bottle、Pyramid、Tornado 等等,甚至你也自己也可以造一個 Web 框架,那麼這麼多框架,為什麼他們都可以用 Gunicorn 或者 Uwsgi 來部署呢?
答案就是 WSGI 規範。
WSGI 不是框架,也不是一個模組,而是介於 Web應用程式(Web框架)與 Web Server 之間互動的一種規範。只要大家都遵循WSGI規範實現 Web 框架,就可以 使用 Gunicorn 來執行,規範最早在 PEP333 中被提出。
WSGI 規定了Web伺服器(Server)和應用程式(Application)雙方各自需要實現什麼介面,以便兩者能完美的配合使用,這個和 USB Type-C 規範很像, 只要手機和充電線都遵循了 Type-C 介面規範, 大家的充電線就可以複用,不同的是充電誰快誰慢的問題,而蘋果沒有遵循Type-C規範,所以只有他自家的線才能充蘋果手機。
現在你應該差不多理解什麼是WSGI了,那麼 WSGI 對應用程式是如何規範的呢? 很簡單,你只需要寫一個符合以下格式的函式即可:
def app(environ, start_response):
start_response("200 OK", [("Content-Type","text/html")])
return ["Hello world!\n"]
這個函式必須接收兩個引數,environ 是一個類似字典的資料結構,封裝了瀏覽器的請求資料。 start_response 是一個函式,必須在app 裡面呼叫,引數就是狀態碼和響應內容的型別。app 的返回值就是請求的響應資料。 最終 app 是被 server 來呼叫的。
現在我們用 Python 內建的 http server 來啟動這個程式
from wsgiref.simple_server import make_server
if __name__ == "__main__":
httpd = make_server("", 8000, app)
print("Serving http on port 8000")
httpd.serve_forever()
啟動,訪問地址:
你理解了嗎?點個贊吧。
對了,明天有個贈書活動,不要錯過了哦。
推薦閱讀
優秀如你都在關注
相關文章
- 產品經理應該讀什麼書?
- Java技術轉(兼顧)產品經理——讀《快速轉行做產品經理》有感Java
- 什麼是產品經理的“Jobs to Be Done”框架?框架
- 從入門到放棄?做個「懂」技術的產品經理沒那麼難!
- 四年進階|產品助理(專員)、產品經理、高階產品經理、產品總監是什麼樣子?
- 產品讀書《電商產品經理》
- API介面是什麼?產品經理怎麼去看API介面文件?API
- 為什麼產品經理總被吐槽是”水貨“
- 產品讀書《人人都是產品經理 2.0》
- 產品經理與互動設計師的區別是什麼?
- 產品經理和專案經理有什麼區別
- 給產品經理講講,什麼是持續交付和DevOpsdev
- 成為區塊鏈行業的產品經理是什麼感覺區塊鏈行業
- 產品經理必瞭解的3個app技術框架APP框架
- 為什麼說“產品經理的工作是世界上最容易的工作”?
- 產品經理那麼值錢,他們的工作內容到底是什麼?
- 「轉」產品助理、產品經理、產品負責人、產品總監有什麼區別?
- 產品經理如何幫助減少技術債務 ?
- 產品經理課程的必殺技
- 產品經理需求溝通的藝術
- 為什麼通才能成為更好的產品經理 - productcoalition
- 產品經理
- 《解構產品經理》讀書筆記筆記
- 軟體開發和產品經理是怎麼回事
- 程式設計師是最好的產品經理程式設計師
- 小學生也能讀懂的Docker入門教程Docker
- 優秀產品經理 Vs. 偉大產品經理
- 程式設計師和產品經理之間是什麼關係?是如何相愛相殺的?程式設計師
- 解讀什麼是遠端訪問技術
- 「產品經理全連線系列1」Epic/Feature/Story/Task/Bug到底是什麼
- [產品經理之路] 0:持續優化著世界的產品經理優化
- 產品經理在研發流程中到底扮演什麼角色?
- 什麼是CDN?CDN的技術原理是什麼?
- vr全景技術是指什麼?什麼是vr全景技術?VR
- 聊聊敏捷的產品經理敏捷
- 什麼是技術策劃?應屆生能當技術策劃嗎?
- 五分鐘讀懂什麼是容器雲
- 你還在困惑什麼是AI產品經理嗎?快來學學AI思維AI