Tornado框架简介
1、概念:
? ? Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,由FriendFeed公司在自己的网站FriendFeed中使用,被Facebook收购以后框架在2009年9月以开源软件形式开放给大众。 2、特点: ? ? 2、作为Web服务器,Tornado有较为出色的抗负载能力,官方用nginx反向代理的方式部署Tornado和其它Python web应用框架进行对比,结果最大浏览量超过第二名近40%。 3、性能: ? ? 2、Tornado框架和服务器一起组成一个WSGI的全栈替代品。单独在WSGI容器中也可以使用 ? ? 3、tornado网络框架或者tornaod http服务器,有一定的局限性,为了最大化的利用 -------------------Tornado与Django的区别------------------- ? ? 2、特点: ? ?? ???2、异步编程 ? ?? ???3、WebSockets 2、Django ? ? 2、Django提供的方便,也意味着Django内置的ORM跟框架内的其他模块耦合程度高,应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利。 ? ? 3、特点: ? ?? ???2、后台管理 ? ?? ???3、ORM -------------------Tornado安装 2、安装对应的tornado环境 ? ? 2、手动安装 ? ?? ???2、$ tar xvzf tornado-4.3.tar.gz ? ?? ???3、$ cd tornado-4.3 ? ?? ???4、$ python setup.py build ? ?? ???5、$ sudo python setup.py install 3、安装对应的数据库操作环境 -------------------Tornado基本模块 ? ? 2、定义实现路由映射列表中的handler类。 ? ? 3、创建服务器实例,绑定服务器端口。 ? ? 4、启动当前线程的IOLoop。 2、tornado.web ? ? 2、Application: 3、tornado.ioloop ? ? 2、Linux的epoll原理图 ? ? 3、IOLoop.current(): ? ? 4、IOLoop.start(): 4、tornado.httpserver ? ?? ???#引用对应的Tornado包 ? ?? ???class IndexHandler(RequestHandler): ? ?? ?? ?? ?def get(self): ? ?? ?? ?? ?? ? self.write(‘hello word!‘) ? ?? ???if name == ‘main‘: ? ?? ?? ?? ?#app.listen(‘8000‘) ? ?? ?? ?? ?#绑定对应的端口号 ? ?? ?? ?? ?#开启多个tornado进程 ? ?? ?? ?? ?IOLoop.current().start() 5、tornado.options ? ? 2、tornado.options.define() ? ?? ???2、name 选项变量名,须保证全局唯一性,否则会报“Option ‘xxx‘ already defined in ...”的错误; ? ?? ???3、default 选项变量的默认值,如不传默认为None; ? ?? ???4、type 选项变量的类型,从命令行或配置文件导入参数的时候tornado会根据这个类型转换输入的值,转换不成功时会报错,可以是str、float、int、datetime、timedelta中的某个,若未设置则根据default的值自动推断,若default也未设置,那么不再进行转换。可以通过利用设置type类型字段来过滤不正确的输入。 ? ?? ???5、multiple 选项变量的值是否可以为多个,布尔类型,默认值为False,如果multiple为True,那么设置选项变量时值与值之间用英文逗号分隔,而选项变量则是一个list列表(若默认值和输入均未设置,则为空列表[])。 ? ?? ???6、help 选项变量的帮助提示信息,在命令行启动tornado时,通过加入命令行参数 --help 可以查看所有选项变量的信息(注意,代码中需要加入tornado.options.parse_command_line())。 ? ? 3、tornado.options.options ? ? 4、tornado.options.parse_command_line() ? ? 5、tornado.options.parse_config_file(path) ? ? 6、实例 ? ?? ?#引用对应的Tornado包 ? ?? ?tornado.options.define("port",type=int,help="端口号") ? ?? ?class IndexHandler(RequestHandler): ? ?? ?? ? def get(self): ? ?? ?? ?? ???self.write(‘hello word!‘) ? ?? ?if name == ‘main‘: ? ?? ?? ? #创建一个app应用 ? ?? ?? ? #app.listen(‘8000‘) ? ?? ?? ? #绑定对应的端口号 ? ?? ?? ? #开启多个tornado进程 ? ?? ?? ? IOLoop.current().start() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |