Day1_Python库_tornado2

 一、tornado 的hello world

1)导入模块包(2个)

2)创建处理类+定义get方法(服务器处理类)

3)设置路由 (创建对象app,1参列表,列表里映射元组,元组是url)

4)绑定监听接口 (8888)

5)启动监听

#1.导入模块包(2个)    #调用 xx函数=处理类  
import tornado.web  #浏览器访问 类、函数
import tornado.ioloop   #输入输出/循环

#目的:访问127.0.1:8888/显示hello world    #处理函数=类,!!继承于父类
#2.创建处理类    基于服务器处理的类
class IndexHandler(tornado.web.RequestHandler):     #RequestHandler请求处理器
    #!!重写一个get方法
    def get(self):
        self.write("Hello, world!")

#3.设置路由     创建对象application,1参是列表,列表里是元组(多个映射是元组),元组是URL的
app=tornado.web.Application([
    (r'/',IndexHandler)
])
#4.绑定端口     #绑定监听端口+ip地址 默认127.0.0.1本机
app.listen(8885)
#5.启动监听     instance获取实例,单线程
tornado.ioloop.IOLoop.instance().start()

二、IO多路复用(多个客户端2)

1.单客户端

套接字=ip+port端口号

2.多客户端(客户端上万个)

IO多路复用支持三种方式:

1)select:连接上限1024        Win/Linux

n次交互,不断轮询每一个socket对象,就是已经连接的还要再问一下,所以效率低下。

2)poll:        Linux

3)epoll:链接数量无限制        Linux

1次交互,轮询1次,给每个对象绑定一个 回调函数,休眠变成就绪,对socket端口进行读写操作。

小小红:处理类

小小蓝:Indexhandler,处理完有响应,返回给“处理器”,返回给“IOloop”,返回给“客户端”,看到消息(异步请求:Indexhandler处理类。阻塞:可以先放弃这个请求,直接响应,告诉客户端还没有处理好,返回的是一个状态而不是结果,再往下。)

小长红:路由分发器,匹配正则调用相应处理类(匹配访问路径,刚刚匹配‘/’调用Indexhandler)

红:IOloop

蓝:epoll(内核中的epoll机制)

绿:socket对象(就绪状态,则跟客户端建立好链接)

小蓝:多个客户端发起请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值