Python开源Web框架Tornado学习笔记
Tornado是FriendFeed使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本,能让python web服务器搭建变得更加简单快捷。
相关资料
这里是中文帮助文档。
这里是项目GitHub地址。
这里是一个很好的教程
环境搭建
1.下载安装release下载页
1 | tar xvzf tornado-1.2.1.tar.gz |
2.通过 pip 或者 easy_install 来安装,如:
使用pip安装命令,如果安装失败运行时引包会报错
1
sudo pip install tornado
但前提是机器里安装了pip,如果没有的话先安装pip再说:
1
sudo apt-get install python-pip
pip卸载/更新命令:
1
2sudo pip uninstall tornado
sudo pip install --upgrade tornado
编写代码
编写Python代码比较习惯使用Jetbrains公司的PyCharm,获取注册码可参考http://idea.qinxi1992.cn/
GitHub上源代码里包含了示例代码
HelloWorld代码:
访问http://localhost:8888/ 就可以在浏览器打印出Hello, world
1 | #!/usr/bin/python |
使用Tornado的程序结构清晰易懂,程序定义了一个类,一个函数,一些全局代码
1 | if __name__ == "__main__": |
这里是代码执行的入口,这个判断语句判断该模块是否是主模块,里面一般写一些对该模块的测试代码,只有把该模块作为主模块执行的时候,才运行这些测试代码,否则当它作为类库被其他模块引用时,就不必手动来注释这些测试代码了。
普通Tornado程序的执行,就是一个tornado.web.Application对象通过listen()监听一个端口,在使用tornado.ioloop.IOLoop.current().start()开启IOLoop。
Handler与请求映射
光有监听,没有指定服务器接受请求后的操作,也不能完成请求,Tornado通过继承tornado.web.RequestHandler,重写get(), post()等方法来指定相应的操作,Handler数组作为Application构造参数与之关联。
因此一个Application可以有多个Handler,对应不同的次级url,例如
1 | class FirstHandler(tornado.web.RequestHandler): |
定义了两个Handler类,在Application构造方法参数中如(r”/first”, FirstHandler)指定子URL /first对应到FirstHandler,字符串”/first”前面的r作用是声明字符串中的所有字符不做转义操作,因此通过访问http://localhost:8888/first 和http://localhost:8888/second 可以映射到不同的操作。
也可以使用通配符,这时匹配的参数还会作为参数传递到Handler请求中
1 | class MainHandler(tornado.web.RequestHandler): |
这时访问http://localhost:8888/page/789 ,页面打印出Page789。但如果传入不匹配的url如http://localhost:8888/page/789aa ,将会返回404错误。
如此以后,如果网站需要增加一个页面或模块,只需要在项目中添加对应的Handler并注册即可。