用tornado写一个博客(1)Hello Tornado

2015-09-20 13:48:05

本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议

tornado


首先tornado是什么,以下摘自tornado的官方文档:

pic

Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. By using non-blocking network I/O, Tornado can scale to tens of thousands of open connections, making it ideal for long polling, WebSockets, and other applications that require a long-lived connection to each user.

所以可以看出,tornado首先是一个python的web服务框架,也是一个异步的服务器,即是python下一个高性能的服务器,对长链接的支持就非常好(比如quora和知乎就是很大程度基于了tornado的长链接)

hello.py


所以现在我们先来写一个最简单的hello world程序(专注hello world30年,品质有保证)

import tornado.ioloop
import tornado.web

class HelloHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello Tornado!")


app=tornado.web.Application([
    (r"/",HelloHandler),
        ])


if __name__=="__main__":
    app.listen(5000)
    tornado.ioloop.IOLoop.current().start()

我们来逐句解释一下:

  • 首先第一二行import进tornado的部分,第一个ioloop按官方的解释是最主要的socket事件处理包(An I/O event loop for non-blocking sockets.)第二行是tornado的web server包(tornado.web provides a simple web framework with asynchronous features that allow it to scale to large numbers of open connections, making it ideal for long polling.),官方解释,他还有很多异步的部分部件,不过我们先不用对他太了解先

  • 接着我们创建一个HelloHandler类,一般来说,tornado处理一个逻辑就喜欢叫一个xxxhandler,算是格式化写法吧,这个类继承至 tornado.web.RequestHandler,tornado的handler里面,一般你的request请求的method是哪种方法就把函数名命名为何种,和django与flask很不一样,所以我们这里写一个get方法,当接到get请求时便会调用,写进一个 Hello Tornado

  • 接着的部分是定义路由,tornado不像django有一个 url.py 的程序,也不像flask基于werkzeug的很好用的路由,tornado需要用自己的 tornado.webApplication来定义,格式是一个列表,列表里面两个值 `[path的正则表达式,xxxHandler] '

  • 接着的部分就是主程序,只有当启动这个程序时才会调用,我们看到app监听的是5000端口,最后一句是打开tornado的ioloop的server运行。

这个时候你运行

python hello.py

打开 localhost:5000

便会看到

pic

好,最简单的一个tornado程序就算是做好了。

tornado 返回首页

Designed and built with all the love in the world by the Mr.ALJUN.

@SERVER BY NGINX AND POWER BY DIGITALOCEAN.

© COPYRIGHT BY GAGASALAMER 2015