tornado为我们提供了一个便捷的工具,tornado.options模块——全局参数定义、存储、转换。
tornado是facebook开源的非阻塞web容器,类似java的netty,tornado.options是负责解析tornado容器的全局参数的,同时也能够解析命令行传递的参数和从配置文件中解析参数。
tornado.options默认是定义为单例模式的,通过tornado.options.options对象来维护全局参数,如果在线程中需要维护自己的变量,也可以使用tornado.options. OptionParser对象来维护参数。tornado.options.options就是通过实例OptionParser的对象来实现的,而且把define、parse_command_line、parse_config_file放到tornado.options 包中,可以直接使用,与调用tornado.options.options的方法是一致的。
tornado.options.define()是用来定义options选项变量的方法,定义的变量可以在全局的tornado.options.options中获取使用。
# -*- coding:utf-8 -*- import tornado.web # web服务 import tornado.ioloop # I/O 时间循环 import tornado.httpserver # 新引入httpserver模块,单线程的http服务 from tornado.options import define, options define("port", default=8066, type=int, help="run on the given port") define("domain", default=[], type=str, help="run on the given domain", multiple=True) class Mainhandler(tornado.web.RequestHandler): def get(self): self.write("hello world!") app = tornado.web.Application([ (r"/index", Mainhandler), ]) if __name__ == "__main__": tornado.options.parse_command_line() # 如果命令行没有传值,则使用默认值 tornado.options.parse_config_file("./config") # 引用config文件里面的值,文件内容:port=8006 print tornado.options.options.port http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) # tornado.ioloop.IOLoop.current().start() tornado.ioloop.IOLoop.instance().start()