![](https://img-blog.csdnimg.cn/2020121611315973.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Tornado
Tornado
杨林伟
像火箭科学家一样思考!
展开
-
19 Tornado - 部署Tornado
为了充分利用多核CPU,并且为了减少同步代码中的阻塞影响,在部署Tornado的时候需要开启多个进程(最好为每个CPU核心开启一个进程) 因为Tornado自带的服务器性能很高,所以我们只需开启多个Tornado进程。为了对外有统一的接口,并且可以分发用户的请求到不同的Tornado进程上,我们用Nginx来进行代理。 1. supervisor 为了统一管理Tornado的多个进程,我们可以借...原创 2019-09-02 18:07:32 · 334 阅读 · 0 评论 -
18 Tornado - WebSocket
WebSocket是HTML5规范中新提出的客户端-服务器通讯协议,协议本身使用新的ws://URL格式。 WebSocket 是独立的、创建在 TCP 上的协议,和 HTTP 的唯一关联是使用 HTTP 协议的101状态码进行协议切换,使用的 TCP 端口是80,可以用于绕过大多数防火墙的限制。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端直接向客户端推送数据而不...原创 2019-09-02 18:03:10 · 340 阅读 · 0 评论 -
17 Tornado - Tornado异步
因为epoll主要是用来解决网络IO的并发问题,所以Tornado的异步编程也主要体现在网络IO的异步上,即异步Web请求。 1. tornado.httpclient.AsyncHTTPClient Tornado提供了一个异步Web请求客户端tornado.httpclient.AsyncHTTPClient用来进行异步Web请求。 fetch(request, callback=None) ...原创 2019-09-02 18:00:54 · 423 阅读 · 0 评论 -
16 Tornado - 认识异步
1. 同步 我们用两个函数来模拟两个客户端请求,并依次进行处理: # coding:utf-8 def req_a(): """模拟请求a""" print '开始处理请求req_a' print '完成处理请求req_a' def req_b(): """模拟请求b""" print '开始处理请求req_b' print '完成处理请求req...原创 2019-09-02 17:56:33 · 299 阅读 · 0 评论 -
15 Tornado - 用户验证
用户验证是指在收到用户请求后进行处理前先判断用户的认证状态(如登陆状态),若通过验证则正常处理,否则强制用户跳转至认证页面(如登陆页面)。 authenticated装饰器 为了使用Tornado的认证功能,我们需要对登录用户标记具体的处理函数。我们可以使用@tornado.web.authenticated装饰器完成它。当我们使用这个装饰器包裹一个处理方法时,Tornado将确保这个方法的主体只...原创 2019-09-02 17:51:37 · 337 阅读 · 0 评论 -
14 Tornado - XSRF
跨站请求伪造 先建立一个网站127.0.0.1:8000,使用上一节中的Cookie计数器: class IndexHandler(RequestHandler): def get(self): cookie = self.get_secure_cookie("count") count = int(cookie) + 1 if cookie else 1 ...原创 2019-09-02 17:49:20 · 510 阅读 · 0 评论 -
13 Tornado - Cookie
设置 set_cookie(name, value, domain=None, expires=None, path=’/’, expires_days=None) 参数说明: import datetime class IndexHandler(RequestHandler): def get(self): self.set_cookie("n1", "v1") ...原创 2019-09-02 17:44:42 · 336 阅读 · 0 评论 -
12 Tornado - 数据库
与Django框架相比,Tornado没有自带ORM,对于数据库需要自己去适配。我们使用MySQL数据库。 在Tornado3.0版本以前提供tornado.database模块用来操作MySQL数据库,而从3.0版本开始,此模块就被独立出来,作为torndb包单独提供。torndb只是对MySQLdb的简单封装,不支持Python 3。 torndb安装 pip install torndb ...原创 2019-09-02 17:39:37 · 332 阅读 · 2 评论 -
11 Tornado - 使用模板
1. 路径与渲染 使用模板,需要仿照静态文件路径设置一样,向web.Application类的构造函数传递一个名为template_path的参数来告诉Tornado从文件系统的一个特定位置提供模板文件,如: app = tornado.web.Application( [(r'/', IndexHandler)], static_path=os.path.join(os.path...原创 2019-09-02 17:36:22 · 512 阅读 · 0 评论 -
10 Tornado - 静态文件
现在有一个预先写好的静态页面文件 (下载静态文件资源), 我们来看下如何用tornado提供静态文件。 static_path 我们可以通过向web.Application类的构造函数传递一个名为static_path的参数来告诉Tornado从文件系统的一个特定位置提供静态文件,如: app = tornado.web.Application( [(r'/', IndexHandler)...原创 2019-09-02 17:24:51 · 590 阅读 · 0 评论 -
09 Tornado - 接口与调用顺序
下面的接口方法是由tornado框架进行调用的,我们可以选择性的重写这些方法。 1. initialize() 对应每个请求的处理类Handler在构造一个实例后首先执行initialize()方法。在讲输入时提到,路由映射中的第三个字典型参数会作为该方法的命名参数传递,如: class ProfileHandler(RequestHandler): def initialize(self...原创 2019-09-02 17:22:15 · 578 阅读 · 0 评论 -
08 Tornado - 输出
1. write(chunk) 将chunk数据写到输出缓冲区。如我们在之前的示例代码中写的: class IndexHandler(RequestHandler): def get(self): self.write("hello itcast!") 想一想,可不可以在同一个处理方法中多次使用write方法? 下面的代码会出现什么效果? class IndexHandl...原创 2019-09-02 17:18:38 · 321 阅读 · 0 评论 -
07 Tornado - 输入
1. 获取查询字符串参数 get_query_argument(name, default=_ARG_DEFAULT, strip=True) 从请求的查询字符串中返回指定参数name的值,如果出现多个同名参数,则返回最后一个的值。 default为设值未传name参数时返回的默认值,如若default也未设置,则会抛出tornado.web.MissingArgumentError异常。 s...原创 2019-09-02 17:12:38 · 354 阅读 · 0 评论 -
06 Tornado - Application
settings 前面的学习中,我们在创建tornado.web.Application的对象时,传入了第一个参数——路由映射列表。实际上Application类的构造函数还接收很多关于tornado web应用的配置参数,在后面的学习中我们用到的地方会为大家介绍。 我们先来学习一个参数: debug,设置tornado是否工作在调试模式,默认为False即工作在生产模式。当设置debug=Tru...原创 2019-09-02 17:07:10 · 340 阅读 · 0 评论 -
05 Tornado - options
tornado为我们提供了一个便捷的工具,tornado.options模块——全局参数定义、存储、转换。 tornado.options.define() 用来定义options选项变量的方法,定义的变量可以在全局的tornado.options.options中获取使用,传入参数: name 选项变量名,须保证全局唯一性,否则会报“Option ‘xxx’ already defined i...原创 2019-09-02 16:56:13 · 344 阅读 · 0 评论 -
04 Tornado - httpserver
上一节我们说在tornado.web.Application.listen()(示例代码中的app.listen(8000))的方法中,创建了一个http服务器示例并绑定到给定端口,我们能不能自己动手来实现这一部分功能呢? 现在我们修改上一示例代码如下: # coding:utf-8 import tornado.web import tornado.ioloop import tornado....原创 2019-09-02 16:51:07 · 336 阅读 · 0 评论 -
03 Tornado - 入门程序
新建文件hello.py,代码如下: # coding:utf-8 import tornado.web import tornado.ioloop class IndexHandler(tornado.web.RequestHandler): """主路由处理类""" def get(self): """对应http的get请求方式""" se...原创 2019-09-02 16:45:31 · 306 阅读 · 0 评论 -
02 Tornado - 安装
自动安装 1.查看自己当前的环境是否已安装 $ pip list 2.安装 $ 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.gz $ cd tor...原创 2019-09-02 16:41:25 · 363 阅读 · 0 评论 -
01 Tornado - 介绍
Tornado 全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用框架,由FriendFeed公司在自己的网站FriendFeed中使用,被Facebook收购以后框架在2009年9月以开源软件形式开放给大众。 特点: 作为Web框架,是一个轻量级的Web框架,类似于另一个Python web框架Web.py,其拥有异步非阻塞IO的处理方式。 作为W...原创 2019-09-02 16:38:43 · 417 阅读 · 0 评论