WSGI 閘道器介面

2022-09-17 15:15:30 字數 3800 閱讀 7856

閘道器介面在伺服器和應用中間承擔乙個「翻譯官」的角色。只要應用程式符合閘道器介面的標準,那麼伺服器就只要做好伺服器的角色,應用程式只要做好應用程式的作用,伺服器和應用程式之間的通訊全靠閘道器介面來協調。常用的閘道器介面有cgiwsgi,本文就以wsgi閘道器介面來對此進行說明。

wsgi

wsgi的主要作用是在web伺服器和web應用程式承擔「翻譯官」的角色。對於這一角色可以這樣理解:

web伺服器的責任在於監聽和接收請求。在處理請求的時候呼叫wsgi提供的標準化介面,將請求的資訊轉給wsgi

wsgi的責任在於「中轉」請求和響應資訊。wsgi接收到web伺服器提供的請求資訊後可以做一些處理,之後通過標準化介面呼叫web應用,並將請求資訊傳遞給web應用。同時,wsgi還將會處理web應用返回的響應資訊,並通過伺服器返回給客戶端;

web應用的責任在於接收請求資訊,並且生成響應。

根據以上分析,要實現符合wsgi標準的web服務,伺服器和應用程式的設計就要符合wsgi規範。

wsgi規範如下:

在python標準庫中,wsgiref包就是符合wsgi標準的web服務實現。後面簡單對wsgiref包進行介紹,以此來對符合wsgi標準的web服務的實現過程進行梳理。

wsgiref包為實現wsgi標準提供了乙個參考,它可以作為獨立的伺服器測試和除錯應用程式。在實際的生產環境中盡量不要使用。wsgiref包含有以下模組:

以上模組暫時不做詳細的介紹。本文剩餘內容將******_server模組單獨拿出來,以其中的測試例子簡單說明符合wsgi標準的web伺服器的實現過程。

wsgiref包的******_server模組實現了乙個符合wsgi規範的伺服器。測試**如下:12

1. 建立http伺服器

其中make_server函式用來建立伺服器:12

3456

7def make_server(

):server = server_class((host, port), handler_class)

return server

2. 使用webbrowser模組建立請求

緊接著,測試例子匯入webbrowser模組,使用函式建立了乙個請求。

3. 伺服器處理請求

伺服器通過handle_request()方法處理請求。關於處理請求的過程簡單介紹如下:12

上面handle()函式先解析了請求,之後建立了乙個wsgi閘道器類例項handler,這個例項可以作為伺服器和應用程式之間的介面存在。

wsgi閘道器的定義在handlers模組。上一步驟中通過呼叫wsgi閘道器類例項handlerrun方法,wsgi閘道器開始處理請求。

run方法的**如下:12

3456

78910

1112

1314

1516

1718

# note to self: don't move the close()! asynchronous servers shouldn't

# call close() from finish_response(), so if you close() anywhere but

# the double-error branch here, you'll break asynchronous servers by

# prematurely closing. async servers must return from 'run()' without

# closing if there might still be output to iterate over.

try:

self.setup_environ()

self.finish_response()

except:

try:

self.handle_error()

except:

# if we get an error handling an error, just give up already!

self.close()

raise # ...and let the actual server figure it out.

run方法的主要功能有:

5. 關閉伺服器

請求結束後,伺服器會呼叫一系列函式關閉請求連線。之後測試**呼叫server_close()方法關閉伺服器。

部落格**:

wsgi初探及wsgiref 原理流程 :

FastCGI 通用閘道器介面

1.什麼是fastcgi fastcgi 是乙個可伸縮的 高速的在http伺服器和動態指令碼語言的通訊的介面。重要特點如下 http伺服器和動態指令碼語言的介面或工具 可把動態語言解析和http伺服器分離開 fastcgi採用c s架構,即http客戶端和動態語言解析伺服器 php動態語言可以啟動多...

農行閘道器支付介面

網上支付平台證書 trustpaycertfile c trustpay.cer 商戶編號 merchantid 1038811000000 交易日誌開關 true 表示寫日誌,false 表示不寫日誌 enablelog true 交易日誌檔案存放目錄 logpath c 不需要寫檔名 證書儲存 ...

CGI 通用閘道器介面

cgi即 common gateway inte ce 譯作 通用閘道器介面 是應用程式與應用程式之間的輸入輸出協議。比如我們寫信,規定了開頭一句寫稱呼,中間寫內容,最後署名和日期。看到這種格式,我們就知道這是一封信。我要知道寫這封信的人或者日期。那麼我就直接信的最後兩行。cgi就是應用程式與應用程...