一、tornado web程序编写思路

. 创建web应用实例对象,第一个初始化参数为路由映射列表
. 定义实现路由映射列表中的handler类
. 创建服务器实例, 绑定服务器端口
. 启动当前线程的IOLoop

二、tornado.web

1.RequestHandler:
封装了对应一个请求的所有信息和方法,write(响应信息)就是写响应信息的一个方法;对应每一种http请求方式(get、post等),把对应的处理逻辑写进同名的函数名方法里面(如对应get请求方式,就将对应的处理逻辑写在get()方法中),当没有对应请求方式的成员方法时,会返回“405: Method Not Allowed”错误。

2.Application:

tarnado web框架的核心应用类,是与服务器对接的接口,里面保存了路由信息表,里面保存了路由信息表,其初始化接收的第一个参数就是一个路由信息映射元组的列表;其listen(端口)方法用来创建一个http服务器实例,并绑定到给的端口(注意:此时服务器并未开启监听)

3.tornado.ioloop

(1)tornado的核心io循环模块,封装了linux的epoll和BSD的kqueue,tornado高性能的基石

(2)epoll原理

(3)IOLoop.current():   返回当前线程的IOLoop实例。

(4)IOLoop.start(): 启动IOLoop实例的IO循环,同时服务器监听被打开。

4.tornado.httpserver

实例:

#!/usr/bin/env python
# -*- coding:utf- -*-
# Author:Irving # 一个简单的tornado web # 引用对应的tornado包
from tornado.web import Application, RequestHandler
from tornado.ioloop import IOLoop
from tornado.httpserver import HTTPServer class IndexHandler(RequestHandler):
def get(self):
self.write("hello world!") if __name__ == '__main__':
# 创建一个app应用
app = Application([('/', IndexHandler)]) # applisten('')
# 为应用创建一个http服务
http_server = HTTPServer(app) # 绑定对应的端口号
http_server.listen() # 开启多个tornado进程
# http_server.bind()
# http_server.start() IOLoop.current().start()

5.tornado.options 

(1)tornado.options模块 -- 全局参数定义、存储、转换

(2)tornado.options.define()

  1. def define(name, default=None, type=None, help=None, metavar=None, multiple=False, group=None,  callback=None)

  2. name 选项变量名,须保证全局唯一性,否则会报“Option 'xxx' already defined in ...”的错误

  3. default 选项变量的默认值,如不传默认为None

  4. type 选项变量的类型,转换不成功时会报错,可以是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
  全局options对象,所有定义的选项变量都会作为该对象的属性

(4)tornado.options.parse_command_line()

  进行初始化

(5)tornado.options.parse_config_file(path)

(5)实例

#!/usr/bin/env python
# -*- coding:utf- -*-
# Author:Irving # 一个简单的tornado web # 引用对应的tornado包
from tornado.web import Application, RequestHandler
from tornado.ioloop import IOLoop
from tornado.httpserver import HTTPServer
import tornado.options tornado.options.define("port", type=int, default=, help="端口号") class IndexHandler(RequestHandler):
def get(self):
self.write("hello world!") if __name__ == '__main__':
tornado.options.parse_command_line() # 创建一个app应用
app = Application([('/', IndexHandler)]) # applisten('')
# 为应用创建一个http服务
http_server = HTTPServer(app) # 绑定对应的端口号
http_server.listen(tornado.options.options.port) # 开启多个tornado进程
# http_server.bind()
# http_server.start() IOLoop.current().start()

tornado基本使用一的更多相关文章

  1. Python(九)Tornado web 框架

    一.简介 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过 ...

  2. 使用tornado,我们可以做什么?

    以下介绍都是建立在python2.x的基础上面,tornado使用任意版本皆可. 如果我们需要对外提供一个http server(web api)/websocket server时,我们都可以使用t ...

  3. tornado session

    [转]tornado入门 - session cookie 和session 的区别: 1.cookie数据存放在客户的浏览器上,session数据放在服务器上. 2.cookie不是很安全,别人可以 ...

  4. tornado template

    若果使用Tornado进行web开发可能会用到模板功能,页面继承,嵌套... 多页应用模板的处理多半依赖后端(SPA就可以动态加载局部视图),就算是RESTfull的API设计,也不妨碍同时提供部分模 ...

  5. tornado上手

    http://www.tornadoweb.org/en/stable/ http://www.cnblogs.com/fanweibin/p/5418697.html import tornado. ...

  6. tornado+sqlalchemy+celery,数据库连接消耗在哪里

    随着公司业务的发展,网站的日活数也逐渐增多,以前只需要考虑将所需要的功能实现就行了,当日活越来越大的时候,就需要考虑对服务器的资源使用消耗情况有一个清楚的认知.     最近老是发现数据库的连接数如果 ...

  7. centos 6.7 搭建tornado + nginx + supervisor的方法(已经实践)

    首先,本来不想写这篇博客了,但是我测试了很多网上的例子包括简书的,全不行,我总结原因是自己太笨,搞了俩个晚上,后来决定,自己还是写一篇记录下来,保证自己以后使用 环境: centos6.7 64 py ...

  8. tornado中将cookie值设置为json字符串

    不熟悉,找了很久,能FQ的话, https://groups.google.com/forum/#!topic/python-tornado/9Y--NgwjP_w 2楼有解释. tornado.es ...

  9. tornado 异步调用系统命令和非阻塞线程池

    项目中异步调用 ping 和 nmap 实现对目标 ip 和所在网关的探测 Subprocess.STREAM 不用担心进程返回数据过大造成的死锁, Subprocess.PIPE 会有这个问题. i ...

  10. 离线安装 Python 2.7, paramiko 和 tornado

    无非就是离线安装, 步骤比较繁琐, 记录一下. 需求很简单, 一个离线安装的 Python, 能跑 tornado 和 paramiko 1. 离线安装 Python 2.7 .tgz cd Pyth ...

随机推荐

  1. web自动化-selenium+Chrome驱动国内下载地址+驱动对应Chrome版本号

    selenium各版本下载地址 http://selenium-release.storage.googleapis.com/index.html 国内下载:http://npm.taobao.org ...

  2. 第五章 编码/加密——《跟我学Shiro》

    转发地址:https://www.iteye.com/blog/jinnianshilongnian-2021439 目录贴:跟我学Shiro目录贴 在涉及到密码存储问题上,应该加密/生成密码摘要存储 ...

  3. NASA HEG tool安装心得

    自从NASA对MRT工具停止支持后,这个工具的官网也随之打不开无法下载.处理数据当然还是需要官方的工具好一些. 现在NASA推荐使用HEG工具来处理MODIS系列产品,除此之外工具对ASTER, MI ...

  4. php 大数组 foreach 循环嵌套的性能优化

    前提:最近在做后台的时候,页面加载太慢,故第一时间想到的自然是优化SQL, 优化后sql查询速度从 2秒变成了零点几秒, 以为就这麽完事了,然并卵,加载竟然花费30秒! 这麽慢,然后在代码中分块记录它 ...

  5. PHP判断是不是爬虫的方法

    PHP判断是不是爬虫的方法这个一般用于防止爬虫 和 seo优化(因为爬虫都是按照第一次打开显示的页面 有些ajax 等需要点击才能显示的就爬不到啦)<pre><?php// 判断是否 ...

  6. 第一周-----基本数据类型(primitive data type)

  7. 第一周--------Java的特性和优势

    --------我认可的1.跨平台性:   Java 的int 永远是32位,不像C++可能是16.,32 可能是根据编译器厂商规定的变化.这样的话,程序的移植就会变得困难2.安全性    Java ...

  8. Webpack配置开发环境总结

    本文主要讲解webpack.config.js文件的配置,不会讲解webpack是什么,默认你会安装webpack及其它npm包,并对webpack有一些了解. 下面将从webpack.config. ...

  9. Netty自定义数据包协议

    粘包和分包出现的原因是:没有一个稳定数据结构 解决办法: 分割符 长度 + 数据 * <pre> * 数据包格式 * +——----——+——-----——+——----——+——---- ...

  10. java 中的容器(札记)

    创建容器向上转型为接口的时候,有时候,并不是一定可行的,因为有的实现类,在接口的基础添加了自己的方法:比如:List 接口下面的 LinkedList 自己定义了一些方法 : Arrays.asLis ...