1. 程式人生 > >人生苦短我用python[0x0C] 小試tornado(websocket)

人生苦短我用python[0x0C] 小試tornado(websocket)

ext .html php tex https color 個人 業務 sha

tornado簡介

python不僅可以用來做系統或者業務層面的開發,還可以做跟web相關的項目,目前有3個比較廣泛流行的python開源web框架,有web.py、tornado、django。web.py http://webpy.org/ 它相對於其他兩個框架來講比較精簡上手也比較快,當然了精簡的另外一方面就是功能比較簡單。tornado http://www.tornadoweb.org/ 網上流傳作者的靈感來自於web.py,tornado跟其他框架相比,經常說的一個特性就是非阻塞服務。最後一個常見的django我們會在另外的文章單獨再介紹,個人感覺django https://www.djangoproject.com/ 貌似更適合用來做web的前後端融合開發,但django使用起來個人覺得相對比較復雜,需要理解的概念東西比較多,tornado則相對來講比較適合做web的後端服務,而且使用起來也簡單。

tornado使用案例
什麽時候我們會用到python的web框架呢?在回答這個問題之前我們先了解一下現狀,我們知道當前有2個很成熟,穩定,而且使用面也很廣的開源web服務端,apache和nginx,他們都能內嵌或者支持php,lua等動態擴展,可以很好地完成大部分項目對web的需求功能。apache,nginx這些web服務端,它們擅長的地方都是提供http、https或者代理服務,如果請求的連接需要後臺長期運行的比如websocket服務,用起來就不太好使。現在微信的小程序都很流行,在微信的小程序裏面只有2種網絡通信方式可以用,一種是普通的http請求回復型的斷連接,一種是支持長連接的websocket,假如需要使用小程序來實現一個長連接的功能,那麽websocket則是不二之選。

下面我們通過一個websocket服務器聊天室作為例子,演示tornado框架的簡單使用。

先安裝tornado
技術分享圖片
編輯main.py文件內容如下:
技術分享圖片
運行main.py文件
技術分享圖片
我們再使用一個在線的websocket測試工具 http://www.websocket.org/echo.html 連接到我們的websocket服務器,記得我們使用的是普通的websocket(ws),所以務必訪問http的地址,如果訪問了https默認是用wss(SSL的websocket訪問是不行的),如下截圖所示:
技術分享圖片
一切正常的話,會提示CONNECTED代表連接websocket服務器成功,這個時候我們調用api接口發送一個消息。

技術分享圖片
我們可以看到websocket測試工具連接的websocket成功地收到我們發送的消息。

人生苦短我用python[0x0C] 小試tornado(websocket)