pep3333指出,wsgi(web server gateway inte***ce)是web伺服器和web框架或web應用之間建立的一種簡單通用的介面規範。有了wsgi這份介面規範,在web開發的過程中,能更加自由的選擇伺服器端和框架;在伺服器端和框架的開發過程能夠分離開來,不用過多的考慮雙方具體的實現,使得伺服器端和框架開發者能夠專心自己領域的開發工作。
實現乙個服務端wsgi serve:
#middleware!/usr/bin/python
#coding=utf-8
def environ={} #
設定環境資訊
def start_response(status,headers): #
define callback function
pass
def write(data): #
訪問result iterator object
pass
for data in
result:
write(data)
middleware 即是服務端又是應用端。那麼就將滿足服務端條件:能夠配置envion,具有start_response並將其傳遞給應用程式呼叫應用程式;應用端條件:可呼叫,接收兩個引數,返回迭代物件。
def從函式的角度實現的中介軟體和從類的角度實現的中介軟體,類的角度實現的中介軟體更加直觀明顯。callable function
url=environ['
path_info']
get the view function
return
result
return
class
dispath():
def
def__call__
(self,environ,start_response):
#do sometiong
自身可呼叫
#!/usr/bin/python
#coding=utf-8
可呼叫接收兩個引數
status='
200 ok
'headers=[('
content-type
','text/plain
')] #
設定響應狀態碼和響應資訊
start_response(status,headers)
#呼叫**函式
return ["
hello world
"] #
返回body 可迭代物件
WSGI閱讀筆記二
從wsgi原始碼中可以看到,第乙個函式是get current url,原始碼如下,仔細分析一下這段 的作用 def get current url environ,root only false,strip querystring false,host only false,trusted hos...
Werkzeug原始碼閱讀筆記 三
這次主要講下werkzeug中的local.原始碼在werkzeug local.py 在python中,狀態是儲存在物件中。thread local是一種特殊的物件,它是對執行緒隔離的。所謂對執行緒隔離,是指每乙個執行緒對乙個thread local物件進行修改,是不會影響到其他執行緒的。這就好比...
Flask學習記錄之使用Werkzeug雜湊密碼
資料庫中直接存放明文密碼是很危險的,werkzeug庫中的security能夠方便的實現雜湊密碼的計算 security庫中 generate password hash password,method.函式將原始密碼作為輸入,以字串形式輸出密碼的雜湊值 check password hash ha...