Tornado
C-haidragon
我的视频学习地址:https://edu.csdn.net/lecturer/5805?spm=1003.2001.3001.4144
展开
-
Tornado是为何物
1.1 Tornado是为何物Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,由FriendFeed公司在自己的网站FriendFeed中使用,被Facebook收购以后框架在2009年9月以开源软件形式开放给大众。特点:作为Web框架,是一个轻量级的Web框架,类似于另一个Python web框架Web.py,其原创 2017-11-11 10:44:51 · 575 阅读 · 0 评论 -
使用模板
使用模板1. 路径与渲染使用模板,需要仿照静态文件路径设置一样,向web.Application类的构造函数传递一个名为template_path的参数来告诉Tornado从文件系统的一个特定位置提供模板文件,如:app = tornado.web.Application( [(r'/', IndexHandler)], static_path=os.path.join原创 2017-11-13 10:38:38 · 553 阅读 · 0 评论 -
数据库
数据库与Django框架相比,Tornado没有自带ORM,对于数据库需要自己去适配。我们使用MySQL数据库。在Tornado3.0版本以前提供tornado.database模块用来操作MySQL数据库,而从3.0版本开始,此模块就被独立出来,作为torndb包单独提供。torndb只是对MySQLdb的简单封装,不支持Python 3。torndb安装pip install原创 2017-11-13 10:44:03 · 464 阅读 · 0 评论 -
Cookie
Cookie对于RequestHandler,除了在第二章中讲到的之外,还提供了操作cookie的方法。设置set_cookie(name, value, domain=None, expires=None, path='/', expires_days=None)参数说明:参数名说明namecookie名valuecoo原创 2017-11-13 10:47:54 · 611 阅读 · 0 评论 -
XSRF
XSRF跨站请求伪造先建立一个网站127.0.0.1:8000,使用上一节中的Cookie计数器:class IndexHandler(RequestHandler): def get(self): cookie = self.get_secure_cookie("count") count = int(cookie) + 1 if cook原创 2017-11-13 10:51:15 · 9813 阅读 · 0 评论 -
用户验证
用户验证用户验证是指在收到用户请求后进行处理前先判断用户的认证状态(如登陆状态),若通过验证则正常处理,否则强制用户跳转至认证页面(如登陆页面)。authenticated装饰器为了使用Tornado的认证功能,我们需要对登录用户标记具体的处理函数。我们可以使用@tornado.web.authenticated装饰器完成它。当我们使用这个装饰器包裹一个处理方法时,Tornado将确保原创 2017-11-13 10:57:25 · 615 阅读 · 0 评论 -
认识异步
认识异步1. 同步我们用两个函数来模拟两个客户端请求,并依次进行处理:# coding:utf-8def req_a(): """模拟请求a""" print '开始处理请求req_a' print '完成处理请求req_a'def req_b(): """模拟请求b""" print '开始处理请求req_b' print '完成处原创 2017-11-13 11:01:34 · 235 阅读 · 0 评论 -
Tornado异步
Tornado异步因为epoll主要是用来解决网络IO的并发问题,所以Tornado的异步编程也主要体现在网络IO的异步上,即异步Web请求。1. tornado.httpclient.AsyncHTTPClientTornado提供了一个异步Web请求客户端tornado.httpclient.AsyncHTTPClient用来进行异步Web请求。fetch(request, c原创 2017-11-13 11:05:15 · 575 阅读 · 0 评论 -
WebSocket
WebSocketWebSocket是HTML5规范中新提出的客户端-服务器通讯协议,协议本身使用新的ws://URL格式。WebSocket 是独立的、创建在 TCP 上的协议,和 HTTP 的唯一关联是使用 HTTP 协议的101状态码进行协议切换,使用的 TCP 端口是80,可以用于绕过大多数防火墙的限制。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务原创 2017-11-13 11:07:08 · 384 阅读 · 0 评论 -
静态文件
静态文件现在有一个预先写好的静态页面文件 (下载静态文件资源), 我们来看下如何用tornado提供静态文件。static_path我们可以通过向web.Application类的构造函数传递一个名为static_path的参数来告诉Tornado从文件系统的一个特定位置提供静态文件,如:app = tornado.web.Application( [(r'/', Inde原创 2017-11-12 10:40:23 · 1189 阅读 · 0 评论 -
接口与调用顺序
接口与调用顺序下面的接口方法是由tornado框架进行调用的,我们可以选择性的重写这些方法。1. initialize()对应每个请求的处理类Handler在构造一个实例后首先执行initialize()方法。在讲输入时提到,路由映射中的第三个字典型参数会作为该方法的命名参数传递,如:class ProfileHandler(RequestHandler): def ini原创 2017-11-12 10:38:51 · 5381 阅读 · 0 评论 -
Tornado与Django
1.2 Tornado与DjangoDjangoDjango是走大而全的方向,注重的是高效开发,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。Django提供的方便,也意味着Django内置的ORM跟框架内的其他模块耦合程度高,应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM原创 2017-11-12 10:09:01 · 544 阅读 · 0 评论 -
安装
安装自动安装查看自己当前的环境是否已安装$ pip list安装$ pip install tornado手动安装下载安装包tornado-4.3.tar.gz(https://pypi.python.org/packages/source/t/tornado/tornado-4.3.tar.gz)$ tar xvzf tornado-4.3.tar原创 2017-11-12 10:10:52 · 241 阅读 · 0 评论 -
Hello
上代码新建文件hello.py,代码如下# coding:utf-8import tornado.webimport tornado.ioloopclass IndexHandler(tornado.web.RequestHandler): """主路由处理类""" def get(self): """对应http的get请求方式"""原创 2017-11-12 10:14:12 · 382 阅读 · 1 评论 -
httpserver
httpserver上一节我们说在tornado.web.Application.listen()(示例代码中的app.listen(8000))的方法中,创建了一个http服务器示例并绑定到给定端口,我们能不能自己动手来实现这一部分功能呢?现在我们修改上一示例代码如下:# coding:utf-8import tornado.webimport tornado.ioloopi原创 2017-11-12 10:18:21 · 2488 阅读 · 0 评论 -
options
options在前面的示例中我们都是将服务端口的参数写死在程序中,很不灵活。tornado为我们提供了一个便捷的工具,tornado.options模块——全局参数定义、存储、转换。tornado.options.define()用来定义options选项变量的方法,定义的变量可以在全局的tornado.options.options中获取使用,传入参数:name 选项变量原创 2017-11-12 10:22:21 · 2391 阅读 · 0 评论 -
Application
Applicationsettings前面的学习中,我们在创建tornado.web.Application的对象时,传入了第一个参数——路由映射列表。实际上Application类的构造函数还接收很多关于tornado web应用的配置参数,在后面的学习中我们用到的地方会为大家介绍。我们先来学习一个参数:debug,设置tornado是否工作在调试模式,默认为False即工作在生原创 2017-11-12 10:24:13 · 470 阅读 · 0 评论 -
输入
输入下面几节主要讲解tornado.web.RequestHandler。回想一下,利用HTTP协议向服务器传参有几种途径?查询字符串(query string),形如key1=value1&key2=value2;请求体(body)中发送的数据,比如表单数据、json、xml;提取uri的特定部分,如/blogs/2016/09/0001,可以在服务器端的路由中用正则表达式截取;原创 2017-11-12 10:28:11 · 454 阅读 · 0 评论 -
输出
输出1. write(chunk)将chunk数据写到输出缓冲区。如我们在之前的示例代码中写的:class IndexHandler(RequestHandler): def get(self): self.write("hello itcast!")想一想,可不可以在同一个处理方法中多次使用write方法?下面的代码会出现什么效果?class原创 2017-11-12 10:35:41 · 520 阅读 · 0 评论 -
部署Tornado
部署Tornado为了充分利用多核CPU,并且为了减少同步代码中的阻塞影响,在部署Tornado的时候需要开启多个进程(最好为每个CPU核心开启一个进程)因为Tornado自带的服务器性能很高,所以我们只需开启多个Tornado进程。为了对外有统一的接口,并且可以分发用户的请求到不同的Tornado进程上,我们用Nginx来进行代理。1. supervisor为了统一管原创 2017-11-13 11:11:08 · 928 阅读 · 0 评论