Python 学习笔记9 - Tornado

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiang12835/article/details/69664009

9、Tornado

1Tornado 开发基础

1-1 Tornado 概述

特点:

1)  非阻塞式服务器

2)  速度相当快

3)  既是web server也是web framework

安装:

 >pip install tornado

验证:

  C:\Users\Administrator>python

Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:32:19) [MSC v.1500 32 bit (

Intel)] on win32

Type "help", "copyright", "credits" or"license" for more information.

>>> import tornado

>>> 

知乎的服务端就是使用tornado开发的

1-2 创建Tornado应用

Tornado需要手动创建项目

vim

运行:

python main.py --port=9000

localhost:9000

1-3 模板和表单

渲染模板的方法:self.render(‘index.html’)

模板的语法– 变量、控制语句、自定义函数

➜  tornado python

Python 2.7.6 (default, Jun 22 2015,18:00:18)

[GCC 4.8.2] on linux2

Type "help","copyright", "credits" or "license" for more information.

>>> from tornado.template importTemplate

>>> content =Template("<html><body>{{con}}</bady></html>")//变量

>>> printcontent.generate(con="hello world")

<html><body>helloworld</bady></html>

>>> 

>>> content =Template("<html><body>{{[x for x inrange(10)]}}}</bady></html>") //控制语句

>>> print content.generate()

<html><body>[0, 1, 2, 3, 4, 5,6, 7, 8, 9]}</bady></html>

>>> 

>>> def demo(s):

...    return 'hello '+s

...

>>> demo('world')

'hello world'

>>> printTemplate("{{d('world')}}").generate(d=demo) //函数

hello world

>>> 

模板文件:

 template_path = os.path.join(os.path.dirname(__file__),”templates”)

静态文件- JS CSS文件

static_path = os.path.join(os.path.dirname(__file__),”static”)

加快静态文件的加载的速度方法:<href=’{{ static_url(“1.css”)}}’>

1-4 数据库操作

base64

➜ tornado python

Python 2.7.6 (default, Jun 22 2015, 18:00:18)

[GCC 4.8.2] on linux2

Type "help", "copyright", "credits" or"license" for more information.

>>> import base64

>>> import uuid

>>> printbase64.b64encode(uuid.uuid4().bytes+uuid.uuid4().bytes)

jGnJFmflSJu9HYz4ApTBkBHi56dBQkessSMGFnDCzM0=

  >>>

mysql - torndb

安装:

  sudoapt-get install python-mysqldb

  sudopip install torndb

  注意:torndb依赖mysqldb

mongodb – nosql – big data

  asyncmongo- 异步的接口,正好契合tornado的框架

2Tornado开发-异步实现

2-1 异步的使用

同步:提交请求 -> 等待服务器处理-> 处理完毕返回

这个期间客户端浏览器不能干任何事

异步:请求通过事件触发-> 服务器处理 -> 处理完毕

     这时浏览器仍然可以做其他的事件

2-2 Tornado的基础异步调用

使用异步生成器

yield – 每当使用时,才会调用 - 节省性能,提高性能

并发

2-3 Tornado的长轮询以及Websocket – 实时的获取信息

长轮询– 聊天室

Websocket – 全双工

3Tornado开发 - 高性能解读

3-1 epoll 介绍

poll本质是linux系统调用,作用是监控资源是否可用

epoll – event poll

select

优点:

  支持一个进程打开大数目的socket描述符

  IO效率不会随socket描述符数量的提升而线性下降

  使用mmap加速内核与用户空间的消息传递

epoll的C接口

  intepoll_create(int size)

  intepoll_ctl(int epfd, int op, int fd, struct epoll_event *event)

  intepoll_wait(int epfd, struct poll_event *event, int max, int timeout)

3-2 Tornado 高性能解读

3-3 RequestHandler 和 Application

在web.py

Application类:

__init__

listen

add_handlers – 添加路由的转发规则

add_transform – 添加输出的过滤器

__call__

RequestHandler类

Tornado的工作流程

3-4 Tornado Webserver

将Django部署到Tornado中,将它作为HTTP server来使用

4Tornado 开发 - TCP 编程

4-1 tornado 在 TCP 层的工作

TCP:

  面向连接的、可靠的、基于字节流的传输层通信协议

与http的区别:

传输数据可以只用TCP,但是传出的数据是无法识别的,因此需要应用层的协议去解析,如HTTP,FTP

应用:

  面向连接,对传输的数据有可靠,安全性的要求,就需要使用TCP

TCP建立连接过程:三次握手

4-2 ioloop 相关 API 介绍

4-3 iostream 相关 API 介绍

4-4 RPC 介绍以及使用

4-5 twisted 的介绍以及与 tornado 的比较

猜你喜欢

转载自blog.csdn.net/xiang12835/article/details/69664009