关于tornado的知识点总结

自己看书抄的,想着用下markdown来着,没用好
后期写点程序出来
可以随意批评内容的不正确性以及排版的low,all accept!!


简单介绍下tornado

概念

Tornado是使用Python编写的一个强大的、可扩展的Web服务器
协程是tornado中推荐的编程方式
同步异步
同步 导致请求进程阻塞,一个被调用的io函数会阻塞调用函数的执行
异步不导致请求进程阻塞
异步编程提高了服务器的并发能力

协程

        是tornado中进行异步开发的方法
        协程使用了python关键字yield将调用者挂起和恢复
        可以开发出类似同步代码的异步行为
        本身不适用线程,所以减少了线程上下文切换的开销,是一种高效到的开发模式
        结合了同步和异步处理的优点
        关键点技术
            用tornado.gen.coroutine装饰 处理器的 get post函数
            使用异步对象处理耗时操作
            使用yield关键字获取异步对象的处理结果

迭代器

        是访问集合内元素的一种方式

yield

        调用任何定义中包含yield关键字的函数都不会执行该函数,而会获得对应该函数的迭代器

ioloop

        是tornado的主事件循环对象,tornado程序通过它监听外部客户端的访问请求,并执行相应操作
核心

完备的web框架

        url路由映射
        request上下文
        基于模板的渲染技术### 高效的网络库
        异步io支持
        超时事件处理
        可应用于
            爬虫
            物联网关
            游戏服务器
        高效的内部http服务器
            它与tornado异步调用紧密结合
        完备的websocket支持
架构
    它还拥有处理安全性、用户验证、社交网络以及与外部服务(如数据库和网站API)进行异步交互的工具
    tornado的基础
        引入 ioloop跟web类

路由解析

### requesthandler
        配置和响应url请求的核心类
        接入点函数
        输入函数
        输出函数
### 用户身份验证框架
        安全cookie机制
            辨别用户身份而存储在用户本地终端的数据
        用户身份认证
### 防止跨站攻击
        跨站伪造请求 CSRF或xsrf 是一种对网站的恶意利用
        tornado可以通过一个cookie头和一个隐藏的html表单元素向页面提供令牌
### websocket
        是html5定义的一种新的标准协议,实现了浏览器与服务器的全双工通信 full-duplex
        通信原理
            在客户端与服务器之间建立tcp持久连接,从而使得当服务器有消息需要推送给客户端时能进行即时通信
        建立链路的核心,四个字段
            connection:upgrade
            sec-websocket-key:12334
            upgrade:websocket
            sec-websocket-version:13
            子主题 5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python Tornado框架是一个轻量级、高效的Web框架,特别适合处理异步IO操作。以下是Python Tornado框架的说明文档: 1. 安装和运行 可以通过pip安装Tornado框架,具体命令为: ``` pip install tornado ``` 安装完成后,可以通过以下代码启动Tornado服务: ``` import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") def make_app(): return tornado.web.Application([ (r"/", MainHandler), ]) if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start() ``` 2. 异步IO支持 Tornado框架的异步IO支持非常好,可以通过coroutine和callback两种方式来实现异步IO操作。以下是coroutine方式的示例代码: ``` import tornado.ioloop import tornado.web import tornado.gen class MainHandler(tornado.web.RequestHandler): @tornado.gen.coroutine def get(self): res = yield self.do_async_task() self.write(res) @tornado.gen.coroutine def do_async_task(self): # 异步IO操作 pass def make_app(): return tornado.web.Application([ (r"/", MainHandler), ]) if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start() ``` 3. 路由和请求处理 Tornado框架的路由和请求处理非常简单,可以通过RequestHandler类来处理请求。以下是路由和请求处理的示例代码: ``` import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") def make_app(): return tornado.web.Application([ (r"/", MainHandler), ]) if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start() ``` 4. 模板引擎支持 Tornado框架内置了模板引擎支持,可以使用jinja2、mako等多种模板引擎。以下是使用jinja2模板引擎的示例代码: ``` import tornado.ioloop import tornado.web import jinja2 class MainHandler(tornado.web.RequestHandler): def get(self): template = self.application.settings['jinja2_env'].get_template('index.html') self.write(template.render()) def make_app(): jinja2_env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates')) return tornado.web.Application([ (r"/", MainHandler), ], jinja2_env=jinja2_env) if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start() ``` 以上是Python Tornado框架的简单说明文档,更多详细内容可以参考官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值