Python3 6學習筆記(六)

2021-08-04 05:40:28 字數 2115 閱讀 5168

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...