wsgi 是為框架或伺服器開發人員提供的工具,而不是為應用人員提供的。
伺服器呼叫時,應當以無快取的形式將產生的內容傳送給客戶端。
方法:len()、close()
server/gateway 端
中介軟體 middleware 扮演兩個角色
middleware常扮演以下角色:
通過網路內的請求**實現負載均衡和遠端處理
實現內容的後續處理,例如xsl樣式表
中介軟體的存在對於服務端和應用端應該都是透明的。
environ 變數
environ 是乙個字典變數。
變數名備註
request_method
http請求方法,get、post、put,不能為空
script_name
指令碼名稱,可以為空
path_info
請求url中的一部分,可以為空
query_string
請求url中問號(?)之後的部分,可以為空
content_type
請求中的content_type欄位,可以為空
content_length
請求中的content_length,可以為空
server_name , server_port
不能為空
server_protocol
客戶端傳送請求採用的協議及版本
http_ 變數
客戶端請求頭中的引數,可以為空
cgi方式需要提供的引數略有不同,具體可以參考pep3333
input、error流
伺服器端必須支援以下幾個方法方法流
read(size)
input
readline()
input
readlines(hint)
input
iter()
input
flush()
errors
write(str)
errors
writelines(seq)
errors
start_response()
方法示例start_response(status, response_headers, exec_info = none)
。
start_response 接收兩個引數start_response(status, response_headers)
,status是狀態返回資訊,諸如「200 ok」或者「404 not found」,純文字,不能包含任何控制符號。response_headers是乙個形如(header_name, header_value)的tuples,必須是python的list。header_name必須是rfc2616中定義的名稱,header_value不包含結束符號及任何控制符號,包括換行等。
一般來說,伺服器端負責確保傳送的header的正確性,如果應用忽略了某個http頭引數,那麼伺服器應該給補充進去。
服務端應該檢查是否向客戶端傳送了保持鏈結的頭引數,如果發現,應該丟擲錯誤。
content-length 頭的處理
如果應用端提供了 content-length 請求頭,服務端不應當傳遞超過這個長度的內容。處理方式是停止傳送內容,或產生乙個報錯。如果沒有提供足夠的內容,則應正常關閉鏈結不產生錯誤。
如果沒有提供 content-length 頭,則服務端可以自己決定採用哪種處理方式,最簡單的就是響應結束後關閉鏈結。某些情況下,服務端可以自己產生 content-length , 或者盡量避免關閉鏈結。如果服務端和客戶端都支援 http/1.1 分塊編碼,則服務端需要為每個塊提供乙個 content-length。
快取和流處理 buffering and streaming
write() callable
一些程式設計框架提供了快取的 write() 函式以及乙個 flush() 函式,用於重新整理快取,但是很遺憾標準的wsgi無法實現這個需求。但wsgi仍提供了乙個特殊 write() 函式,來實現這些迫切的需求。
write() 由 start_response 返回,接收乙個引數。乙個應用必須返回乙個 iterable 物件。
錯誤處理
Python3 6學習筆記(六)
wsgi 是為框架或伺服器開發人員提供的工具,而不是為應用人員提供的。伺服器呼叫時,應當以無快取的形式將產生的內容傳送給客戶端。方法 len close server gateway 端 中介軟體 middleware 扮演兩個角色 middleware常扮演以下角色 通過網路內的請求 實現負載均衡...
python3 6基礎學習記錄(一)
python 3.6 基礎學習記錄 一 1.需要注意空格 2.用 注釋 3.使用print後加end 4 多行語句可用 表示 5 與 表示沒區別,三個單引號可以多個字串 6 input使用 7 if while等迴圈語句條件後需加 表結束 8使用import和import.from python中單...
python3 6基礎學習記錄 四)
函式 返回值 描述 abs x 返回數字的絕對值,如abs 10 返回 10 ceil x 返回數字的上入整數,如math.ceil 4.1 返回 5 cmp x,y 如果 x y 返回 1,如果 x y 返回 0,如果 x y 返回 1。python 3 已廢棄 使用 使用 x y x替換。exp...