python uwsgi實現的簡單web伺服器(8程式碼)
python uwsgi實現的簡單web伺服器,一共用了8行程式碼。
先說一下web領域的幾個概念,主要是舉例:
web伺服器:apache、iis、nginx等。
web應用伺服器:tomcat、jboss、weblogic、iis等。
web應用程式:jsp,asp,php,python等。
先說說wsgi,wsgi全稱 web server gateway interface,是把python伺服器應用程式連線到web伺服器的通用協議。由於wsgi的通用性,出現了獨立的wsgi程式,如我們用的uwsgi,還有Apache的mod_wsgi模組。
wsgi介面分為2個:
(1)與web伺服器的介面
(2)與伺服器程式的介面,這個介面很簡單so easy,這是我們主要關注的。
下面是一個伺服器程式的例子:
1、下載uwsgi
[[email protected] Desktop]# pip install uwsgi Collecting uwsgi Downloading uwsgi-2.0.14.tar.gz (788kB) 100% |████████████████████████████████| 798kB 35kB/s Installing collected packages: uwsgi Running setup.py install for uwsgi ... done Successfully installed uwsgi-2.0.14
2、伺服器程式
這個程式碼就是定義了一個application函式,函式中直接呼叫了start_response函式響應請求(這個函式不是我們寫的,是一個約定,wsgi自動傳過來的,我們只需要呼叫一下),有2個引數:一個是狀態碼,一個是指定了返回訊息的型別是文字html。
然後就返回一個http訊息體,斜體的:hello,world!
程式碼儲存為:web_app.py
def application(environ,start_response): start_response('200 OK',[('Content-Type','text/html')]) return '<p><i>Hello,world!</i></p>'
3、wsgi 伺服器程式
先從資料夾wsgiref中檔案simple_server,匯入函式make_server。
然後,從web_app.py檔案匯入我們上面剛寫的函式application函式。
啟動make_server作為wsgi的容器,第2個引數是web埠,第3個引數是就是我們上面寫的application函式,對請求返會一個hello,world!
最後,通過呼叫容器server的serve_forever函式來執行這個容器,開始接受請求。
程式碼儲存為:wsgi_server.py
from wsgiref.simple_server import make_server
from web_app import application
server = make_server('',8080,application)
server.serve_forever()
4、執行wsgi伺服器程式
[[email protected] Desktop]# python wsgi_server.py
5、瀏覽器檢視網頁
6、wsgi伺服器程式的輸出