欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Tornado—options.define()方法与options.options解读

程序员文章站 2022-03-26 12:06:39
tornado为我们提供了一个便捷的工具,tornado.options模块——全局参数定义、存储、转换。 tornado是facebook开源的非阻塞web容器,类似java的netty,tornado.options是负责解析tornado容器的全局参数的,同时也能够解析命令行传递的参数和从配置 ......

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()