zoukankan      html  css  js  c++  java
  • tornado开发学习之1.HelloWorld和它加强版版本

    1. 本来web.py是一直在使用的,由于要搭建本站的原因,开始了tornado的学习。tornado是大名鼎鼎的,不用我来多说,以此篇开张来记录我学习tornado的过程

    2. 先来介绍一下我的软件环境

    • activepython 2.7
    • pypm install tornado
    • pypm install python-mysql
    • pypm install memcached
    • pypm install markdown
    • pypm install dbutils
    • pypm install mako

      代码编辑器使用的是pycharm2.5

    3. 一个标准的helloworld

    tornado的文档上都可以找到,我简单来解释一下各个部分的作用。
    • 对于地址映射,使用Handlers数组来定义,每个元素是元组,特别注意的是结尾的,号
    • 对于处理地址的类,都是继承与tornado.web.RequestHandler这个基类
    • 下面声明appication,然后指定监听端口
    • 再由著名的IOLoop启动消息循环

    代码

    复制代码
     1 import tornado.ioloop
     2 import tornado.web
     3 class MainHandler(tornado.web.RequestHandler):
     4     def get(self):
     5         self.write("Hello, world")
     6 Handlers=[
     7     (r"/", MainHandler),
     8 ]
     9 application = tornado.web.Application(Handlers)
    10 if __name__ == "__main__":
    11     application.listen(8888)
    12     tornado.ioloop.IOLoop.instance().start()
    复制代码

    4.下面让我们来简单加强一下

    为什么加强,加强什么?在这个例子很简单演示了tornado的运行基本机制后,你会发现,你每次访问http://127.0.0.1:8888/都会得到HelloWorld,满足了么?看看运行环境的控制台,你会得到一串儿的

    哦,它还想要个站点图标,我们要让helloworld不要有缺憾,改写一下一上的HellorWorld

    复制代码
     1 import os
     2 import tornado.ioloop
     3 import tornado.web
     4 def read(name):
     5     f = None
     6     try:
     7         file="%s/%s"%(os.path.dirname(__file__),name)
     8         f = open(file, 'rb')
     9         return f.read()
    10     except:
    11         return ''
    12     finally:
    13         if f: f.close()
    14 class MainHandler(tornado.web.RequestHandler):
    15     def get(self):
    16         self.write("Hello, world")
    17 class ImgHandler(tornado.web.RequestHandler):
    18     def get(self):
    19         ico=read("favicon.ico")
    20         self.write(ico)
    21 Handlers=[
    22     (r"/", MainHandler),
    23     (r"/favicon.ico", ImgHandler),#增加了图标地址的处理
    24 ]
    25 application = tornado.web.Application(Handlers)
    26 
    27 if __name__ == "__main__":
    28     application.listen(8888)
    29     tornado.ioloop.IOLoop.instance().start()
    复制代码

    5. 简单解释一下上面的代码

    • 我们增加了一个read函数,用来读取文件,很好理解,就是以二进制只读模式来读取文件
    • 我们在地址映射时当系统想访问/favicon.ico时,交给ImgHandler处理
    • ImgHandler的作用就是把存放在与helloworld同级目录下的favicon.ico使用read函数读取出来然后回写给浏览器,相当于直接给浏览器一个图标文件(估计有人会说,你不知道有静态目录么?对不起,目前我只知道helloworld)
    • OK,让我们来看看加强版本的tornado的helloworld吧。怎么样漂亮吧。控制台也没有WARNING了。

    原文:http://www.youliaoo.com/post/12

  • 相关阅读:
    关于Sprte2d的图片切割
    关于U3d GameObject类型的可用描述
    [小巩u3d] Sprite 2D的资源占用分析
    [小巩u3d] 关于Raycast对BoxCollider和BoxCollider2d的碰撞监测规则
    Web服务器父与子 Apache和Tomcat区别
    [转]IIS添加MIME扩展类型及常用的MIME类型列表
    转载自知乎:程序员干到三十就干不动了」的说法是从哪来的?
    Unity之如何去除动画scale
    Unity shader学习之简单的水效果
    Unity shader学习之卡通渲染,轮廓线
  • 原文地址:https://www.cnblogs.com/qiangupc/p/4819501.html
Copyright © 2011-2022 走看看