tornado源码学习一--options

下载了tornado 0.1的代码进行学习,之所以选择tornado,是看网上对非阻塞模式评价很高,他也不仅仅是web框架,而且相对django来说代码少多了(django的代码也有看)。选择0.1的原因还是代码相对简单,差别也不大。 查看demos里的helloworld,代码如下:
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import logging

from tornado.options import define, options

define("port", default=8888, help="run on the given port", type=int)

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def main():
    tornado.options.parse_command_line()
    application = tornado.web.Application([
        (r"/", MainHandler),
    ])
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

if __name__ == "__main__":
    main()
从options倒入options和define。先看看官方的描述: 命令行解析模块,来定义使用参数。 例如:上边代码中define("port", default=8888, help="run on the given port", type=int)这句,当年在终端输入helloworld.py --help的时候,将会有“--port                           run on the given port (default 8888)”的提示。 tornado.options.parse_command_line()这一行是对命令行进行解析,格式:("--myoption=myvalue")。也可以是配置文件解析tornado.options.parse_config_file("/etc/server.conf"),配置文件必须是python文件,像: myoption = "myvalue" myotheroption = "myothervalue" 参数指定类型type可以是:datetimes, timedeltas, ints, and floats。 主要说_Options()和_Option() 344行实例化了类_Options,options = _Options.instance(),options现在为空字典,以后将 存储所有选项,通过上边提到的三种方式,添加是只通过define()。 _Option的参数来自define,metavar选择类型的参数,multiple=True会解析多个值,结果列表保存。 这个类里有个有parse()方法,学到很多知识。主要用于解析命令行下的参数,需要将选项对应的类型进行转换,作者使用_parse={type:parse_option_func}.get(type,type)的方法,然后通过_parse(value)进行解析转换参数。没有定义过的解析方法就直接使用type(value)转换了,只能说作者好强大。 代码的最后定义了几个默认设置。0.1的里面有help和logging。 对于options模块里的log代码等下一次总结,剩下的几个函数就很简单了,就不记录了。

上一篇:
下一篇:

相关文章:

Categories: 博客记录

0 Responses so far.

Leave a Reply