初识 tornado 应用程序的代码结构
2012-04-02 22:37
337 查看
本来 tornado 文档中给出了示例程序,但是厌倦了类似教科书式的演示说明,总感觉有些单调。好在
tornado 源码包中 demos 目录下包含一些示例程序,虽然不知道是否可以用作成熟的产品,但总归有
点实用的感觉。就从最简单的 helloworld.py 来看一个 tornado 应用程序的代码结构。
首先是一组 import。这个再正常不过了,当然,之前该有的注释什么的还是要有的
接下来,是定义应用程序的选项,这样可以在启动应用程序的时候指定一些参数。tornado 提供了方法
tornado.options.define 来简化了选项参数的定义,具体的可以通过 help 来查看。这里有直接的例子,
定义端口参数:
因为 helloworld.py 相对比较简单,没有太多的逻辑需要实现,所以代码结构也有些简单。没有关系,可以
看看 demos 下面其他应用的代码,仅仅是看看组织结构,实现方面还得花点时间去研究研究。可以看出,
典型的代码结构是:
需要调用基类的 __init__ 来完成初始化。接下来定义一个 BaseHandler,定义一些基本的操作、或者公共
操作。再往下就是其他 XXHandler 针对映射的 url 的具体实现了。
在 XXHandler 定义之后,是 main() 函数的定义:
这个实例,到此,http server 启动了。tornado.httpserver 模块用来支持非阻塞的 HTTP Server。启动服务器
之后,还需要启动 IOLoop 的实例,这样可以启动事件循环机制,配合非阻塞的 HTTP Server 工作。当然,具体
的实现还是比较复杂的,这里仅仅是简单概括一下。
总结下来,代码组织如下:
tornado 源码包中 demos 目录下包含一些示例程序,虽然不知道是否可以用作成熟的产品,但总归有
点实用的感觉。就从最简单的 helloworld.py 来看一个 tornado 应用程序的代码结构。
首先是一组 import。这个再正常不过了,当然,之前该有的注释什么的还是要有的
import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web from tornado.options import define, options
接下来,是定义应用程序的选项,这样可以在启动应用程序的时候指定一些参数。tornado 提供了方法
tornado.options.define 来简化了选项参数的定义,具体的可以通过 help 来查看。这里有直接的例子,
定义端口参数:
define("port", default=8888, help="run on the given port", type=int)
因为 helloworld.py 相对比较简单,没有太多的逻辑需要实现,所以代码结构也有些简单。没有关系,可以
看看 demos 下面其他应用的代码,仅仅是看看组织结构,实现方面还得花点时间去研究研究。可以看出,
典型的代码结构是:
class Application(tornado.web.Application): def __init__(self): handlers = [ (r"/", MainHandler), ... ] settings = dict(...) tornado.web.Application.__init__(self, handlers, **settings) class BaseHandler(tornado.web.RequestHandler): ...即一开始定义 Application 类,然后在其 __init__ 方法中设置应用程序的 url mapping/settings 等,最后还
需要调用基类的 __init__ 来完成初始化。接下来定义一个 BaseHandler,定义一些基本的操作、或者公共
操作。再往下就是其他 XXHandler 针对映射的 url 的具体实现了。
在 XXHandler 定义之后,是 main() 函数的定义:
def main(): tornado.options.parse_command_line() http_server = tornado.httpserver.HTTPServer(Application()) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start() if __name__ == "__main__": main()应用程序执行时,会先解析选择参数。之后创建一个 Application 实例并传递给 HTTPServer 实例,之后启动
这个实例,到此,http server 启动了。tornado.httpserver 模块用来支持非阻塞的 HTTP Server。启动服务器
之后,还需要启动 IOLoop 的实例,这样可以启动事件循环机制,配合非阻塞的 HTTP Server 工作。当然,具体
的实现还是比较复杂的,这里仅仅是简单概括一下。
总结下来,代码组织如下:
注释 import 语句 选项参数定义 Application定义 BaseHandler定义 XXHandlers定义 main()定义
相关文章推荐
- 嵌入式项目代码结构的分层——HAL(硬件抽象层)、FML(功能模块层)、APL(应用程序层)
- JavaFX应用程序开发的主体代码结构
- Caffe代码结构初识
- 用CCS开发DSP应用程序的代码结构、加电装载及在线编程
- [React-Native]初识代码结构
- 用CCS开发DSP应用程序的代码结构、加电装载及在线编程
- DSP应用程序代码结构+DSP应用程序加电装载过程+DSP应用程序在线编程
- 如何用 Visual studio 2003/2005 调试 ASP 应用程序、Javascript 代码(转)
- S60平台的三种实现的结构(应用程序的用户界面框架)
- App工程结构搭建:几种常见Android代码架构分析
- 您希望通过将所有ArrayList对象替换为相应的泛型版本以提高应用程序的效率,并使得代码更易于使用。当结构体或其他值类型存储在这些数据结构中时,会导致装箱/拆箱操作,这时就需要这么做。
- commont-net.jar 代码结构图
- 基于NHibernate的三层结构应用程序开发初步
- c语言学习之结构篇代码演示样例-输入n个同学的姓名,数学英语成绩,依照平均分从低到高排序并输出
- sphinx的代码结构分析
- Caffe学习笔记1-安装以及代码结构
- 敏捷开发“松结对编程”系列之十七:L型代码结构(编程篇之二)(中)
- nginx代码分析-基本结构-单链表ngx_list_t
- SQLite Version3.3.6源代码文件结构
- jQuery源码解读系列之代码结构分析