更多 标签 'Tornado'
  • 使用get_argument获取url query参数
  • Tornado的每个请求处理程序,我们叫做handler,handler里可以自定义自己的处理程序,其实也就是重写方法,如post,get,get_current_user,send_error等等,这里我们只讲get和post的自定义。我们都知道,在Tornado里,获得用户的输入,都是一个get_argument搞定,似乎很顺理成章。
  • Tornado HTTP服务器的基本流程
  • 本小节介绍Tornado HTTP服务器的基本流程,分别分析httpserver, ioloop, iostream模块的代码来剖析Tornado底层I/O的内部实现。该http服务器主要使用到IOLoop, IOStream, HTTPServer, HTTPConnection几大模块,分别在代码ioloop.py, iostream.py, httpserver.py中实现。
  • 番外篇:Tornado的多进程管理分析
  • Tornado的多进程管理我们可以参看process.py这个文件。在编写多进程的时候我们一般都用python自带的multiprocessing,使用方法和threading基本一致,只需要继承里面的Process类以后就可以编写多进程程序了,这次我们看看tornado是如何实现他的multiprocessing,可以说实现的功能不多,但是更加简单高效。
  • Tornado源码必须要读的几个核心文件
  • 前面我们看了一些关于 Tornado 的总体框架设计图,还有一些模块设计。比如 为什么要阅读Tornado的源码? 里面的文件组织,真的不少,那么我们应该具体去读哪几个文件呢?为了方便,约定$root指带tornado的根目录。总的来说,要用tornado完成一个网站的构建,其实主要需要以下几个文件……
  • 鸟瞰Tornado框架的设计模型
  • Tornado不仅仅是一个WEB框架,它还完整地实现了HTTP服务器和客户端,在此基础上提供WEB服务。它可以分为四层:最底层的EVENT层处理IO事件;TCP层实现了TCP服务器,负责数据传输;HTTP/HTTPS层基于HTTP协议实现了HTTP服务器和客户端;最上层为WEB框架,包含了处理器、模板、数据库连接、认证、本地化等等WEB框架需要具备的功能。
  • 为什么要阅读Tornado的源码?
  • Tornado 由前 google 员工开发,代码非常精练,实现也很轻巧,加上清晰的注释和丰富的 demo,我们可以很容易的阅读分析 tornado. 通过阅读 Tornado 的源码,你将学到:理解 Tornado 的内部实现,使用 tornado 进行 web 开发将更加得心应手。
  • 开始Tornado的源码分析之旅
  • Tornado 是由 Facebook 开源的一个服务器“套装”,适合于做 python 的 web 或者使用其本身提供的可扩展的功能,完成了不完整的 wsgi 协议,可用于做快速的 web 开发,封装了 epoll 性能较好。文章主要以分析 tornado 的网络部分即异步事件处理与上层的 IOstream 类提供的异步IO,其他的模块如 web 的 tornado.web 以后慢慢留作分析。
  • Tornado自带的模板系统入门示例
  • Tornado 自带了模板系统,模板语法与 Django 差异不大。这里简单地介绍如何使用 Tornado 的模板系统。首先是编写 URL 规则与 Handler,文件包含也是用 {% include 'header.html' %} 这样的语法,和 Django 里是一样的。
  • Tornado编程实践建议
  • 最近看到很多人的一些开发经验。比如ruby和rails的使用者非常喜欢传道授业解惑,网上能看到的python的文章大多数在研究一些好玩的算法等等。事实上python在顶级软件团队的应用程度相当普遍,在严肃的生产环境中也十分让人放心。
  • 如何开启Tornado的调试模式
  • 默认用 Tornado 写程序,修改完代码需要将文件上传,然后重启 Supervisord (supervisorctl reload),修改的程序才能生效。但这样比较麻烦,因为需要SSH到服务器进行重启操作。Tornado 自带的调试模式可以让我们轻松不少。开启调试模式也很简单,只需要 import 一个模块即可。
  • Tornado对Web请求与响应的处理机制
  • 接下来我们看一下helloword.py的唯一一个handler。它是tornado.web.RequestHandler的一个子类,覆盖了父类的get方法。get方法也极简单,直接写一个“hello world”字符串到客户端。不难想到,Tornado在接到用户请求http://127.0.0.1:8888/时,最终会调用我们MainHandler的get方法。
  • 关于Tornado handler的更多细节
  • 实际上handler有很多讲究,在Application类的注释中,就讲了不少。首先,(regexp,tornado.web.RequestHandler)中的第一个参数不是普通的字符串,而是正则表达式,这也是为什么示例中它带了一个前缀“r”。这说明一个handler可以匹配很多个request。只要它们的request url能满足regexp匹配。
  • 理解Tornado里的handler
  • 前面我们对 Tornado 自带的 hello world 作了代码组织上的解释,但是没有更加深入细致地解释。这里我们直接从main()函数开始,单步跟随,看看tornado都干了些什么。先从第一行开始:tornado.options.parse_command_line()……
  • 开始用Tornado:从Hello World开始
  • tornado 源码包中 demos 目录下包含一些示例程序,就从最简单的 helloworld.py 来看一个 tornado 应用程序的代码结构。接下来,是定义应用程序的选项,这样可以在启动应用程序的时候指定一些参数。tornado 提供了方法 tornado.options.define 来简化了选项参数的定义,具体的可以通过 help 来查看。
  • Tornado的三大核心模块与处理流程
  • 实现非常简单,只需要定义自己的处理方法,其它的东西全部交给 Tornado 完成。首先创建 web application,并把我们的处理方法 MainHandler 传递过去。然后在8888开始监听。最后启动事件循环,开始监听网络事件,主要是 socket 的读和写。
更多 推荐文章

Welcome to NowaMagic Academy

现代魔法 推荐于 2013-02-27 10:23

更多 目录树
更多 热门小组
魔法达人