中介軟體 WSGI

2022-09-07 03:03:11 字數 3977 閱讀 6614

冒泡程式

array=[1,2,5,3,6,8,4]

foriinrange(len(array)-1,0,-1):

printi

forjinrange(0, i):

printj

ifarray[j] > array[j+1]:

array[j], array[j+1]=array[j+1], array[j]

printarray

單例模式

兩個陣列只差最小

git等版本管理系統的使用經驗

4、對tcp/ip, http等常用協議有基本的了解,能完整敘述一次http請求從客戶端到伺服器端所經過的各個環節

http是用來瀏覽網頁的,tcp/ip是用來傳輸資訊的

從瀏覽器輸入url時,請求dns伺服器去解析,獲取相對ip;

接下來對該ip位址的伺服器進行tcp/ip連線,然後瀏覽器發來http request請求包;

伺服器處理該請求並返回http response包;

接下來瀏覽器開始渲染response包裡的主體,接受完全部以後斷開tcp之間的連線。

-------------------------------

4、對tcp/ip, http等常用協議有基本的了解,能完整敘述一次http請求從客戶端到伺服器端所經過的各個環節 

wsgi

pythonweb伺服器閘道器介面(python web server gateway inte***ce,縮寫為wsgi)是python應用程式或框架和web伺服器之間的一種介面,已經被廣泛接受, 它已基本達成它的可移植性方面的目標。

2012/08/24 by crazyant

如下圖所示django的總覽圖,整體上把握以下django的組成:

核心在於中介軟體middleware,django所有的請求、返回都由中介軟體來完成。

中介軟體,就是處理http的request和response的,類似外掛程式,比如有request中介軟體、view中介軟體、response中介軟體、exception中介軟體等,middleware都需要在 「project/settings.py」 中 middleware_classes 的定義。大致的程式流程圖如下所示:

首先,middleware都需要在 「project/settings.py」 中 middleware_classes 的定義, 乙個http請求,將被這裡指定的中介軟體從頭到尾處理一遍,暫且稱這些需要挨個處理的中介軟體為處理鏈,如果鏈中某個處理器處理後沒有返回response,就把請求傳遞給下乙個處理器;如果鏈中某個處理器返回了response,直接跳出處理鏈由response中介軟體處理後返回給客戶端,可以稱之為短路處理。

django 和其他 web 框架的 http 處理的流程大致相同,django 處理乙個 request 的過程是首先通過中介軟體,然後再通過預設的 url 方式進行的。我們可以在 middleware 這個地方把所有 request 攔截住,用我們自己的方式完成處理以後直接返回 response。

1. 載入配置

django 的配置都在 「project/settings.py」 中定義,可以是 django 的配置,也可以是自定義的配置,並且都通過 django.conf.settings 訪問,非常方便。

2. 啟動

最核心動作的是通過 django.core.management.commands.runfcgi 的 command 來啟動,它執行 django.core.servers.fastcgi 中的 runfastcgi , runfastcgi 使用了 flup 的 wsgiserver 來啟動 fastcgi 。而 wsgiserver 中攜帶了 django.core.handlers.wsgi 的 wsgihandler 類的乙個例項,通過 wsgihandler 來處理由web伺服器(比如apache,lighttpd等)傳過來的請求,此時才是真正進入 django 的世界。

3. 處理 request

當有 http 請求來時, wsgihandler 就開始工作了,它從 basehandler 繼承而來。 wsgihandler 為每個請求建立乙個 wsgirequest 例項,而 wsgirequest 是從 http.httprequest 繼承而來。接下來就開始建立 response 了。

4. 建立response

basehandler 的 get_response 方法就是根據 request 建立 response , 而 具體生成 response 的動作就是執行 urls.py 中對應的view函式了,這也是 django可以處理「友好url」的關鍵步驟,每個這樣的函式都要返回乙個 response 例項。此時一般的做法是通過 loader 載入 template 並生成頁面內 容,其中重要的就是通過 orm 技術從資料庫中取出資料,並渲染到 template 中,從而生成具體的頁面了。

5. 處理response

django 返回 response 給 flup , flup 就取出 response 的內容返回給 web 伺服器,由後者返回給瀏覽器。

總之, django 在 fastcgi 中主要做了兩件事:處理 request 和建立 response , 而它們對應的核心就是「urls分析」、「模板技術」和「orm技術」。

如圖所示,乙個 http 請求,首先被轉化成乙個 httprequest 物件,然後該物件被傳遞給 request 中介軟體處理,如果該中介軟體返回了response,則直接傳遞給 response 中介軟體做收尾處理。否則的話 request 中介軟體將訪問 url 配置,確定哪個 view 來處理,在確定了哪個 view 要執行,但是還沒有執行該 view 的時候,系統會把 request 傳遞給 view 中介軟體處理器進行處理,如果該中介軟體返回了response,那麼該 response 直接被傳遞給 response 中介軟體進行後續處理,否則將執行確定的 view 函式處理並返回 response,在這個過程中如果引發了異常並丟擲,會被 exception 中介軟體處理器進行處理。

來自為知筆記(wiz)

Keystone中介軟體WSGI環境變數總結

openstack keystonemiddleware接收前乙個wsgi過濾器傳來的wsgi環境資訊,進行驗證工作後傳遞給下乙個中介軟體,本文 keystone中介軟體究竟有哪些wsgi環境變數。說明 下文中以 http 開頭的header對應標準http header,以 http x 開頭的h...

中介軟體 訊息中介軟體學習總結

冪等 在程式設計中.乙個冪等操作的特點是其任意多次執行所產生的影響均與一次執行的影響相同。冪等函式,或冪等方法,是指可以使用相同引數重複執行,並能獲得相同結果的函式。這些函式 不會影響系統狀態,也不用擔心重複執行會對系統造成改變。例如,getusername 和settrue 函式就是乙個冪等函式....

中介軟體作業

主要檔案的 fctrl client linux.c this is sample code generated by rpcgen.these are only templates and you can use them as a guideline for developing your ow...