tornado框架基础01-路由简介

tornado 小而精 Django 大而全

Web框架 Tornado是一个由Python开发的Web框架

Web服务 利用Tornado,可以快速搭建和一个高性能的Web服务

非阻塞 Tornado是单线程异步的非阻塞服务器,因此速度非常快,相对一般情况下来说,如果同时连接数Django为3000个左右,那么Tornado为10000个

易于学习 Tornado的学习成本非常低,是个非常容易学习使用的Web框架

Tornado的安装

pip install tornado

import tornado.ioloop #基于epoll的循环.

import tornado.web #web框架的核心模块

import tornado.httpserver

from tornado.options import define,options

define('port',default = 8080,help = 'run port', type = int)

class MainHandler(tornado.web.RequestHandler):

  def get(self):

    self.write('hello this is my first WebWerver')

class IndexHandler():

  

  application = tornado.web.Application(

  [

    (r'/',MainHandler), #数据以元组存放.

    ('/index',IndexHandler)

    #用来存放路径的

]

  ) #基于核心模块下面的类的实例化,是服务器进行调用的接口.web框架的应用核心.

if __name__ = '__main__':

  http_server = tornado.httpserver.HTTPServer(application)  

  http_server.listen(options.port) #绑定操作

  tornado.ioloop.IOloop.current().start() #,询问epoll的一个循环.开启服务器.访问不同路径,返回不同的资源.

路由

get_arguments() ?key=value

简单的例子

import tornado.ioloop

import tornado.web

class MainHandler(tornado.web.RequestHandler): #继承底层封装内容.

def get(self):

self.write("hello,this is my first webserver")

application = tornado.web.Application([ #应用的核心

(r"/",MainHandler), #定义路径及Handler

])

if __name__ == "__main__":

application.listen(8080)

  tornado.ioloop.IOLoop.current().start()

  tornado.ioloop #开启循环,让服务一直等待请求的到来

  tornado.web #web框架核心模块,服务基本功能都封装在此模块中

路由表

application = tornado.web.Application([

(r"/",MainHandler),

])

客户端访问服务器可以看成是:客户端读取服务器资源的一个过程,路由表就指定了具体访问什么资源

在 Tornado 中,路由表通过如上方式定义

路由表是访问服务器的入口,在工作中如果有新的需求,往往只需要在路由表中添加新的路由即可

Handler

class MainHandler(tornado.web.RequestHandler):

def get(self):

self.write("hello ")

在这里指定请求的资源 ,

启动Tornado

导入

import tornado.httpserver

import tornado.ioloop

import tornado.options

import tornado.web

Handler

class IndexHandler(tornado.web.RequestHandler):

def get(self):

self.write('hello')

路由

if __name__ == '__main__':

tornado.options.parse_command_line() #打印请求信息.

app = tornado.web.Application(

handlers=[

(r'/',IndexHandler),

]

)

http_server = tornado.httpserver.HTTPServer(app)

 http_server.listen(options.port)

tornado.ioloop.IOLoop.current().start()

命令行交互 使用命令行来控制启动

Tornado 支持通过命令行参数来控制 Tornado 的启动形式

代码

define('port', default=8080, help='run port', type=int)

define('version', default='0.0.1', help='version 0.0.1', type=str)

#通过这个来设置动态指定端口.

在命令行中输入:python tor.py --port=8888

使用

python test.py --port=8000

python test.py --version=1.0

python test.py --help

输入和输出

输入:

class TestIndexHandler(tornado.web.RequestHandler):

def get(self):

name = self.get_argument('name', 'no') #指定key,value

self.write('hello '+name)

print(name)

name = self.get_arguments('name')

self.write(' ')

self.write(','.join(name))

print(name)

使用:http://127.0.0.1:8000/test?name=budong #key=value&key=value形式.

? 后面便是参数

可以通过: get_argument 和 get_arguments 来获取参数值

输出:

class IndexHandler(tornado.web.RequestHandler):

def get(self):

self.write('abc')

从 Tornado 输出到浏览器我们可以使用 write

上一篇:[Android系列—] 2. Android 项目目录结构与用户界面的创建


下一篇:tornado框架基础11-tornado异步