閘道器介面
在伺服器和應用中間承擔乙個「翻譯官」
的角色。只要應用程式符合閘道器介面的標準,那麼伺服器就只要做好伺服器的角色,應用程式只要做好應用程式的作用,伺服器和應用程式之間的通訊全靠閘道器介面
來協調。常用的閘道器介面有cgi
、wsgi
,本文就以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
閘道器類例項handler
的run
方法,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就是應用程式與應用程...