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().rpy指令碼2 root.putchild('
fred
', hello())
3 root.putchild('
bob', hello())
拓展名是.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,物件,並且儲存在站點返回。如果已經存在,就直接返回。
****把客戶端的請求**給目標伺服器。**通常在內部網路,火這客戶端。可以用於快取,資料報過濾等。
高階配置
1internet, 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 開始監聽了 伺服器...