1. 程式人生 > >python uwsgi實現的簡單web伺服器(8程式碼)

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伺服器程式的輸出