Tornado
Tornado
杨林伟
像火箭科学家一样思考!
展开
-
19 Tornado - 部署Tornado
为了充分利用多核CPU,并且为了减少同步代码中的阻塞影响,在部署Tornado的时候需要开启多个进程(最好为每个CPU核心开启一个进程)因为Tornado自带的服务器性能很高,所以我们只需开启多个Tornado进程。为了对外有统一的接口,并且可以分发用户的请求到不同的Tornado进程上,我们用Nginx来进行代理。1. supervisor为了统一管理Tornado的多个进程,我们可以借...原创 2019-09-02 18:07:32 · 320 阅读 · 0 评论 -
18 Tornado - WebSocket
WebSocket是HTML5规范中新提出的客户端-服务器通讯协议,协议本身使用新的ws://URL格式。WebSocket 是独立的、创建在 TCP 上的协议,和 HTTP 的唯一关联是使用 HTTP 协议的101状态码进行协议切换,使用的 TCP 端口是80,可以用于绕过大多数防火墙的限制。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端直接向客户端推送数据而不...原创 2019-09-02 18:03:10 · 325 阅读 · 0 评论 -
17 Tornado - Tornado异步
因为epoll主要是用来解决网络IO的并发问题,所以Tornado的异步编程也主要体现在网络IO的异步上,即异步Web请求。1. tornado.httpclient.AsyncHTTPClientTornado提供了一个异步Web请求客户端tornado.httpclient.AsyncHTTPClient用来进行异步Web请求。fetch(request, callback=None)...原创 2019-09-02 18:00:54 · 415 阅读 · 0 评论 -
16 Tornado - 认识异步
1. 同步我们用两个函数来模拟两个客户端请求,并依次进行处理:# coding:utf-8def req_a(): """模拟请求a""" print '开始处理请求req_a' print '完成处理请求req_a'def req_b(): """模拟请求b""" print '开始处理请求req_b' print '完成处理请求req...原创 2019-09-02 17:56:33 · 292 阅读 · 0 评论 -
15 Tornado - 用户验证
用户验证是指在收到用户请求后进行处理前先判断用户的认证状态(如登陆状态),若通过验证则正常处理,否则强制用户跳转至认证页面(如登陆页面)。authenticated装饰器为了使用Tornado的认证功能,我们需要对登录用户标记具体的处理函数。我们可以使用@tornado.web.authenticated装饰器完成它。当我们使用这个装饰器包裹一个处理方法时,Tornado将确保这个方法的主体只...原创 2019-09-02 17:51:37 · 323 阅读 · 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 · 495 阅读 · 0 评论 -
13 Tornado - Cookie
设置set_cookie(name, value, domain=None, expires=None, path=’/’, expires_days=None)参数说明:import datetimeclass IndexHandler(RequestHandler): def get(self): self.set_cookie("n1", "v1") ...原创 2019-09-02 17:44:42 · 313 阅读 · 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 · 323 阅读 · 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 · 498 阅读 · 0 评论 -
10 Tornado - 静态文件
现在有一个预先写好的静态页面文件 (下载静态文件资源), 我们来看下如何用tornado提供静态文件。static_path我们可以通过向web.Application类的构造函数传递一个名为static_path的参数来告诉Tornado从文件系统的一个特定位置提供静态文件,如:app = tornado.web.Application( [(r'/', IndexHandler)...原创 2019-09-02 17:24:51 · 577 阅读 · 0 评论 -
09 Tornado - 接口与调用顺序
下面的接口方法是由tornado框架进行调用的,我们可以选择性的重写这些方法。1. initialize()对应每个请求的处理类Handler在构造一个实例后首先执行initialize()方法。在讲输入时提到,路由映射中的第三个字典型参数会作为该方法的命名参数传递,如:class ProfileHandler(RequestHandler): def initialize(self...原创 2019-09-02 17:22:15 · 556 阅读 · 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 · 310 阅读 · 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 · 335 阅读 · 0 评论 -
06 Tornado - Application
settings前面的学习中,我们在创建tornado.web.Application的对象时,传入了第一个参数——路由映射列表。实际上Application类的构造函数还接收很多关于tornado web应用的配置参数,在后面的学习中我们用到的地方会为大家介绍。我们先来学习一个参数:debug,设置tornado是否工作在调试模式,默认为False即工作在生产模式。当设置debug=Tru...原创 2019-09-02 17:07:10 · 327 阅读 · 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 · 333 阅读 · 0 评论 -
04 Tornado - httpserver
上一节我们说在tornado.web.Application.listen()(示例代码中的app.listen(8000))的方法中,创建了一个http服务器示例并绑定到给定端口,我们能不能自己动手来实现这一部分功能呢?现在我们修改上一示例代码如下:# coding:utf-8import tornado.webimport tornado.ioloopimport tornado....原创 2019-09-02 16:51:07 · 326 阅读 · 0 评论 -
03 Tornado - 入门程序
新建文件hello.py,代码如下:# coding:utf-8import tornado.webimport tornado.ioloopclass IndexHandler(tornado.web.RequestHandler): """主路由处理类""" def get(self): """对应http的get请求方式""" se...原创 2019-09-02 16:45:31 · 296 阅读 · 0 评论 -
02 Tornado - 安装
自动安装1.查看自己当前的环境是否已安装$ pip list2.安装$ 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 · 350 阅读 · 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 · 399 阅读 · 0 评论