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

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

https://www.cnblogs.com/renfanzi/p/9585167.html

https://www.jianshu.com/p/ec17650059c9

原文地址:https://www.cnblogs.com/liuhaidon/p/12018404.html