tornado 入门篇

Posted quanquan616

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tornado 入门篇相关的知识,希望对你有一定的参考价值。

一、Tornado简介

Tornado是一个由Python开发的Web框架,它是单线程异步的非阻塞服务器,因此速度非常快。

相对一般情况下来说,如果同时连接数Django为8000个左右,那么Tornado为12000个。

 

二、路由

路由就是路径,一条路线。

通过IP找到服务器,通过端口找到服务。服务都会有一个路由对应一个Handler,在Handler中才执行具体业务逻辑。

比如你去一家会所,会所就是服务器。会所前台妹妹问你需要什么服务,你要打洞,妹妹会指引你去打洞的地方。如果你只是洗澡,妹妹会指引你去洗澡的地方。指引就是路由,一条路线。不同的服务,不同的端口。到了打洞的地方(Handler),洞要怎么打就随你定义了。

技术分享图片

Handler:指定请求的资源,相当于Django的视图函数。

端口:如果所有服务都用同一个端口,就像所有的汽车在同一条路开,结果就是堵死,谁都别想好过!那么就用端口去区分具体是哪个服务,你占用了一个端口,那么其他服务就靠边站,去用其他端口。

web服务:正在运行的程序,可以跟别人交互。

Tornado服务:启动起来就是一个服务了。

 

三、最基本的tornado示例

技术分享图片
import tornado.web
import tornado.ioloop
import tornado.options  # 让模块有自定义选项
import tornado.httpserver  # 启动一个单线程的http服务器
from tornado.options import define, options

# 自定义端口
# help是给人看的帮助提示
define("port", default=8888, help="given your port", type=int)


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello World!")


# 路由表
application = tornado.web.Application(
    # s不要漏下,不然找不到路由   
    handlers=[
        (r"/", MainHandler),
    ]
)

if __name__ == "__main__":
    tornado.options.parse_command_line()  # 可以通过命令行交互 python xxx.py --port=8888
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(options.port)  # 调用自定义端口
    tornado.ioloop.IOLoop.instance().start()
View Code

get_arguments() 和 get_argument()

首先看get_arguments()

技术分享图片
# 只需改动上诉代码中的MainHandler
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        name = self.get_arguments("name")
        print(name)
View Code

 

在浏览器中输入URL http://47.98.139.237:8888/?name=zyb&name=budong

去后台可以看到打印结果 [‘zyb‘, ‘budong‘]

两个重名的name都得到了

 

以上是关于tornado 入门篇的主要内容,如果未能解决你的问题,请参考以下文章

Tornado的入门研究

一篇关于django,tornado性能测试的非专业性报告

Tornado从入门到入门

一篇博客带你入门Flask

tornado基础入门——简单了解tornado

Python Tornado初学笔记之表单与模板