Skip to main content
 首頁 » 程序教程

Python的Web服務器框架tornado簡介

2016年08月18日85583

Tornado和現在的主流 Web 服務器框架(包括大多數 Python 的框架)有著明顯的區別:它是非阻塞式服務器,而且速度相當快。得利于其非阻塞的方式和對 epoll 的運用,Tornado 每秒可以處理數以千計的連接,因此 Tornado 是實時 Web 服務的一個理想框架。我們開發這個 Web 服務器的主要目的就是為了處理 FriendFeed 的實時功能 ——在 FriendFeed 的應用里每一個活動用戶都會保持著一個服務器連接。下面一起來看看Python的Web框架tornado簡單入門吧。

簡單示例

以下是經典的 “Hello, world”進行代碼示例:

#!/usr/bin/env python
# coding:utf-8
import tornado.ioloop
import tornado.web


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")


application = tornado.web.Application([
    (r"/index", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

整個過程其實就是在創建一個socket服務端并監聽8888端口,當請求到來時,根據請求中的url和請求方式(post、get或put等)來指定相應的類中的方法來處理本次請求,在上述demo中只為url為http://127.0.0.1:8888/index的請求指定了處理類MainHandler(具體如何尋找見下文)。所以,在瀏覽器上訪問:http://127.0.0.1:8888/index,則服務器給瀏覽器就會返回 Hello,world ,否則返回 404: Not Found(tornado內部定義的值), 即完成一次http請求和響應。

由上述分析,我們將整個Web框架分為兩大部分:

待請求階段,即:創建服務端socket并監聽端口

處理請求階段,即:當有客戶端連接時,接受請求,并根據請求的不同做出相應的響應。

模塊索引

最重要的一個模塊是web,它就是包含了 Tornado 的大部分主要功能的 Web 框架。其它的模塊都是工具性質的,以便讓 web 模塊更加有用后面的Tornado 攻略 詳細講解了 web 模塊的使用方法。

主要模塊

web - FriendFeed 使用的基礎 Web 框架,包含了 Tornado 的大多數重要的功能

escape - XHTML, JSON, URL 的編碼/解碼方法

database - 對 MySQLdb 的簡單封裝,使其更容易使用

template - 基于 Python 的 web 模板系統

httpclient - 非阻塞式 HTTP 客戶端,它被設計用來和 web 及 httpserver 協同工作

auth - 第三方認證的實現(包括 Google OpenID/OAuth、Facebook Platform、Yahoo BBAuth、FriendFeed OpenID/OAuth、Twitter OAuth)

locale - 針對本地化和翻譯的支持

options - 命令行和配置文件解析工具,針對服務器環境做了優化

底層模塊

httpserver - 服務于 web 模塊的一個非常簡單的 HTTP 服務器的實現

iostream - 對非阻塞式的 socket 的簡單封裝,以方便常用讀寫操作

ioloop - 核心的 I/O 循環

以上是Tornado的簡單介紹,后續將更新Tornado的各種用法。

閱讀延展
評論列表3條評論
四川麻將游戲
四川麻將游戲回復 這個簡介不錯
手機網賺
手機網賺回復 博主寫得不錯,贊贊!
債券
債券回復 寫得很不錯,學習了呢
發表評論
中文字幕亚洲欧美|欧美97人人模人人爽|av鲁丝一区鲁丝二区鲁丝三区|巨大黑人极品VIDEOS精品