Twisted之web開發(一)

2022-05-16 03:36:10 字數 2694 閱讀 3695

site objects

負責建立httpchannel例項來解析http請求,也負責執行。包括url的根部資源。

recource

相當於乙個單獨的url欄位。iresiurce介面負責描述資源物件的方法

負責定義所有的url,相當於乙個對映表

.rpy scripts

是twisted.web靜態資源伺服器會執行的python指令碼,類似cgi,但是他必選建立乙個recource物件,在訪問url的時候展示這個物件

session

允許你儲存一些資訊。

site

site物件作為乙個監聽http請求的埠和根資源之間的粘合劑

寫乙個hello world的例子吧

開啟瀏覽器訪問8080埠,就可以看到hello world了。

resource

資源物件代表乙個url例項。在url解析過程中,getchild呼叫現在的resource產生下乙個resource物件。

當到達葉資源的時候(有root根資源,自然能有leaf葉資源:),如果resource的isleaf設定為true或者沒有更多url欄位,就通過呼叫render(request),和django很像。

在資源定位的時候,已經被處理或者沒有被處理的url欄位可以在request.prepath和request.postpath檢視

path欄位會在通過request.postpath的時候被加工,可以在裡邊檢視。

如果url以「/」結尾,舉個例子最後的url欄位將會是乙個空字串。

舉個例子:

resource tree

其實就是對映表

資源被集中到這裡,使用putchild,這個方法把resource例項放入另乙個resource例項,讓它在給定的路徑下使用

1 root =hello()

2 root.putchild('

fred

', hello())

3 root.putchild('

bob', hello())

.rpy指令碼

拓展名是.rpy的都是python指令碼,放置在twisted web服務的目錄中的時候,在訪問web的時候執行

乙個.rpy指令碼必須定義乙個變數,resource,這個resource物件會render到請求。

.rpy檔案是非常便捷的,因為他們在每個web請求上執行,所以.rpy只需要重新整理頁面,就可以檢視更改結果

render

當twisted web定位到乙個葉資源的時候,會執行web請求。乙個resource的render方法會進行輸出,返回給瀏覽器。

resource類經常是乙個子類,他有便捷方法render.呼叫self.render_method其中的方法來相應http請求。比如request_get,request_post。建議您寫rescouce的時候繼承resource然後執行render_method,而不是呼叫render本身。賬戶已,對於某些resource,可以寫request_get=request.post,萬一你需要處理一些字段,而不管他們是get還是post

http是無狀態協議,每乙個請求響應都是乙個獨立的單元,它和任何其他請求都有區別,只有通過url請求才能區分。

request.getsession()會檢查是否設定了cookie,如果沒有,就建立唯一的會話id,物件,並且儲存在站點返回。如果已經存在,就直接返回。

****把客戶端的請求**給目標伺服器。**通常在內部網路,火這客戶端。可以用於快取,資料報過濾等。

高階配置

1

internet, service, strports

2from twisted.web import

static, server

34 root = static.file("

/var/www/htdocs")

web'

)6 site =server.site(root)

8 i = strports.service("

tcp:80

", site)

9 i.setserviceparent(sc)

Twisted開發Web應用筆記

最近忙,發點舊文湊數 這是三月份試用twisted時記的一點筆記 twisted是乙個功能極為強大的非同步網路應用開發庫 當然是python的。印象中大概也就只有ace有這麼強悍,但twisted在易用性方面要好很多 這其中當然少不了python的功勞 ace是用c 的 這是乙個很好的思路。所以tw...

web開發之快取

以資料為驅動的web站點,當訪問量增大後,由於頻繁的從db中讀取資料,使得db伺服器的壓力大增,從而影響系統的效能。為了緩解這種來自於大訪問量的頻繁讀取db的壓力,我們可以把一些資料快取起來,當請求過來後,不需要去db中獲取資料,在快取中讀取即可 快取不存在,在到db中取 這樣大大減輕了db的壓力,...

Twisted之客戶端程式設計

主要類 reactor protocol 這兩個類都存在與 twisted.internet 命名空間中 reactor物件是twisted程式設計當中的第一步,它就是乙個反應器,專門負責與服務端的連線以及監聽 與伺服器互動,一旦與服務端連線上以後,即可呼叫reactor.run 開始監聽了 伺服器...