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

tornado框架基础01-路由简介的更多相关文章

  1. 框架基础之Hibernate简介

    框架基础之Hibernate简介 1.什么是Hibernate? Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来 ...

  2. tornado框架基础10-websocket

    websocket 01 长轮询 在网页,我们经常扫码登录,结合之前的学习的知识点,来思考下,前端是如何知道用户在手机上扫码登录了呢? 长轮询:客户端不断的向服务器发送请求 缺点: \1. 开销大 \ ...

  3. Flask基础-01.Flask简介

    Flask简介 Web应用程序作用 Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档. 关于Web框架 1. 什么是Web框架? 1. 已经封装好了一段代码,协助程序 ...

  4. tornado框架基础11-tornado异步

    01 同步和异步 生活中常常会遇到在超市排队买东西的情况,排在你前面的人没有结算完成,你就无法付账,在计算机中也有类似的情形,一个程序在执行之前,需要等待其他的程序执行完成,大家还能举出其他的例子吗? ...

  5. tornado框架基础09-cookie和session

    01 cookie 在上节,我们简单了解了登录过程,但是很明显,每次都需要登录,但是在平常逛网站的只需要登录一次,那么网站是如何记录登录信息的呢? 有没有什么办法可以让浏览器记住登录信息,下次再次打开 ...

  6. tornado框架基础04-模板基础

    01 模板 模板演示 配置路径 在 application 中配置模板文件和静态文件的路径: template_path='templates', static_path='static', 模板 & ...

  7. tornado框架基础03-请求与响应

    01 请求与响应 请求 浏览器在发送请求的时候,会发送具体的请求信息,由请求行,请求消息头,请求正文 请求消息头 向服务器传递附加信息 Accept: 浏览器可以接受的MIME类型. Accept-C ...

  8. tornado框架基础02-输入和输出

    01 输出 write bytes类型 class IndexHandler(tornado.web.RequestHandler): def get(self): self.write(b'Torn ...

  9. Django框架——基础之路由系统(urls.py)

    1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...

随机推荐

  1. Jquery | 基础 | 导航条在项目中的应用

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. ie下,php HTTP_REFERER获取失败的整理

    HTTP_REFERER有效的情况1.以iframe 形式调用地址2.以window.open调用,打开新页面window.open(url);3.使用window.location.replace在 ...

  3. python实现汉诺塔(递归)

    def hanoi(n, A, B, C): if n > 0: hanoi(n-1, A, C, B) print("%s->%s" % (A, C)) hanoi( ...

  4. DFS/并查集 Codeforces Round #286 (Div. 2) B - Mr. Kitayuta's Colorful Graph

    题目传送门 /* 题意:两点之间有不同颜色的线连通,问两点间单一颜色连通的路径有几条 DFS:暴力每个颜色,以u走到v为结束标志,累加条数 注意:无向图 */ #include <cstdio& ...

  5. DataTable数据检索的性能分析[转]

    原文链接 作者写得非常好,我学到了许多东西,这里只是转载! 我们知道在.NET平台上有很多种数据存储,检索解决方案-ADO.NET Entity Framework,ASP.NET Dynamic D ...

  6. salt-stack系列报错

    master启动报错 实验环境为: [root@master salt]# cat /proc/version Linux version 3.10.0-327.el7.x86_64 (mockbui ...

  7. 微信小程序组件解读和分析:一、view(视图容器 )

    view组件说明:    视图容器    跟HTML代码中的DIV一样,可以包裹其他的组件,也可以被包裹在其他的组件内部.用起来比较自由随意,没有固定的结构. view组件的用法: 示例项目的wxml ...

  8. qt 设置阴影 不显示黑色边框

    this->setAttribute(Qt::WA_TranslucentBackground);

  9. virtualbox没有64位选项

    今天安装的virtualbox想安装一下sql server 测试一下 在安装系统的时候发现没有64位系统的选项,在网上找了一下 发现是  在BIOS里面有一个选项没有开启, 是 Intel virt ...

  10. jeecms

    ===标签=== <!-- 显示一级栏目对应的二级栏目 --> <!-- [@cms_channel_list parentId=c.id] [#if tag_list?size&g ...