您好,登錄后才能下訂單哦!
這篇文章主要講解了“WSGI有什么作用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“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()
啟動,訪問地址:
感謝各位的閱讀,以上就是“WSGI有什么作用”的內容了,經過本文的學習后,相信大家對WSGI有什么作用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。