Bottle Flask 樣的tornado開發

2021-08-30 20:55:27 字數 2538 閱讀 1787

起因:

中有個專案需要其中的非同步遠端呼叫的特性,遂研究之,用到現在感觸良多,其效能尚可,

但是作為web framework看來其封裝方式我並不喜歡,竊以為不夠緊湊,需要設定的地方不

參考,重頭寫起來很困難。

舉個例子 :

26 從官網的例子就能看出,首先啟動乙個服務就很麻煩了,加之python在開發的時候智慧型感知

能起的作用不是很大,所以開發起來相當的糾結。而且其中我最需要的遠端頁面非同步訪問的

功能,就需要涉及到n個地方。

最近新出的flask,bottle等框架簡潔的api讓我很是眼熱,但是如果在tornado後端用wsgi

來使用bottle又沒有辦法使用非同步遠端訪問,相當於閹割了乙個我最需要的功能,所以怒由

心中起惡向膽邊生,自起爐灶在tornado的web framework基礎上實現了這個東西,由於是簡

化了tornado的開發方式,所以就稱之為 easytor 吧

從demo開始:

easytor只有乙個檔案,你可以直接放在專案的目錄中,或者安裝後使用

2 3 @route("^/hello/([^/]+)$")

4 def hello(tor,name):

5 return u"hello %s"%name

6 7 if __name__=="__main__":

是乙個decorator,用來把乙個handler函式和對映到的url一起註冊到easytor的處理器列表

中。url對映:

easytor中定義了很多decorator,用於註冊一些特定方法並掛載到相應的事件中。最重要的

就是route。

用route註冊的函式至少有乙個引數,第乙個引數是tornado的handler物件,訪問引數,

headers,cookie,是從這個引數開始,詳細的內容參見tornado的文件。

url對映通過route這個decorator來註冊,同時route還可以通過引數指定訪問這個url是否

需要認證,是否是ajax請求和接受請求的方法。

route可以將正規表示式中的組取出來成為handler函式的引數,如同demo裡那樣,如果訪問

/hello/alex,就顯示 hello alex

輸出response:

easytor通過handler函式的返回值向瀏覽器輸出內容,返回值可以是str,unicode,或者幾

個包裝類,json,view,static_file,redirect,remote,async。例項化後將例項直接return

即可。比如要輸出json,只需要

1 return json(dict(name="alex"))

view用於包裝render輸出資料到模板。

redirect用於專跳頁面。

remote是對遠端非同步獲取頁面的封裝

async是乙個空包裝,用於掛起當前的請求(詳見tornado的demo:chat)

非同步訪問:

非同步訪問通過remote類來實現,看下面的例子:

對比tornado原本的例子,可以看到整個api簡單了不少

目的:少寫**,少寫**,還是少寫**

如果你也在用,或者打算用tornado來構建自己的web應用,不妨試試easytor

同時也期待你的加入

ps:專案文件整理中,demo正在寫,**8號中午push上來

原文刊在我的部落格:

Bottle Flask 樣的tornado開發

中有個專案需要其中的非同步遠端呼叫的特性,遂研究之,用到現在感觸良多,其效能尚可,但是作為web framework看來其封裝方式我並不喜歡,竊以為不夠緊湊,需要設定的地方不 參考,重頭寫起來很困難。舉個例子 從官網的例子就能看出,首先啟動乙個服務就很麻煩了,加之python在開發的時候智慧型感知 ...

什麼樣的教育就有什麼樣孩子!

寵出來的孩子 危險 捧出來的孩子 霸道 慣出來的孩子 任性 嬌出來的孩子 脆弱 打出來的孩子 逆反 罵出來的孩子 胡塗 逼出來的孩子 出格 磨出來的孩子 堅強 苦出來的孩子 懂事 教出來的孩子 傳統 闖出來的孩子 勇敢 搏出來的孩子 成功 表揚出的孩子 自信 溺愛出的孩子 依賴 哄出來的孩子 虛偽 ...

一樣的月亮,不一樣的心情

轉眼間,又是一年的中秋佳節,這都是乙個懷鄉思親的節日,自從讀書和工作後,就很難有機會和父母 兄弟姐妹一起過了,在這個只掛燈籠但毫無節日氛圍的城市裡,你可以看到許許多多偽裝的慶祝和喜悅,一樣的月亮一樣的月光一樣的月餅,但心情卻是千差萬別,各顯千秋,最可憐的就是小朋友們了,他們失去了各種自然的 純樸的 ...