產品經理也能讀懂的技術:什麼是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()
啟動,訪問地址:
你理解了嗎?點個贊吧。
對了,明天有個贈書活動,不要錯過了哦。
推薦閱讀
優秀如你都在關注
相關文章
- 沒有技術背景,也能勝任產品經理
- 產品經理要懂多少技術?
- 產品經理要懂多少技術
- 什麼是AI產品經理AI
- 什麼是產品經理的“Jobs to Be Done”框架?框架
- Java技術轉(兼顧)產品經理——讀《快速轉行做產品經理》有感Java
- 產品經理的知識結構是什麼
- 不懂技術的產品經理該怎麼做?
- 產品經理的技術之痛
- 從入門到放棄?做個「懂」技術的產品經理沒那麼難!
- 四年進階|產品助理(專員)、產品經理、高階產品經理、產品總監是什麼樣子?
- 什麼是頂尖的網際網路產品經理?
- 什麼是頂尖的網際網路產品經理
- 郭子威:什麼是網際網路產品經理
- 產品經理常去什麼網站網站
- 軟體產品經理需要技術嗎?
- API介面是什麼?產品經理怎麼去看API介面文件?API
- 產品經理讀書筆記——產品經理20堂課筆記
- 毫無技術Sense的網際網路產品經理是可笑的!!!
- 產品經理與互動設計師的區別是什麼?
- 產品經理請思考這些,也許是你渴求已久的
- 谷歌產品經理眼中的產品經理谷歌
- 產品經理和專案經理有什麼區別
- 教你讀懂什麼是生產型專案管理專案管理
- 「轉」產品助理、產品經理、產品負責人、產品總監有什麼區別?
- 成為區塊鏈行業的產品經理是什麼感覺區塊鏈行業
- 產品經理的戰術執行
- 為什麼說“產品經理的工作是世界上最容易的工作”?
- 產品經理那麼值錢,他們的工作內容到底是什麼?
- 給產品經理講講,什麼是持續交付和DevOpsdev
- 產品經理必瞭解的3個app技術框架APP框架
- 產品經理跟程式設計師之間的主要矛盾是什麼?程式設計師
- 做過程式設計師的產品經理是一種什麼樣的存在?程式設計師
- 產品經理如何幫助減少技術債務 ?
- 技術人如何與產品經理相愛相殺
- 好產品經理和差產品經理的區別
- 為什麼通才能成為更好的產品經理 - productcoalition
- 程式設計師喜歡什麼樣的產品經理?程式設計師