tornado options 配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ty5622022/article/details/85167542

对象属性

tornado.options.options

全局的options对象,所有定义的选项变量都会作为该对象的属性。

#example:
tornado.options.define("port", default=8090, type=int, help="run server on the given port.")  # 定义服务器监听端口选项

定义变量:tornado.options.define()

用来定义options选项变量的方法,定义的变量可以在全局的tornado.options.options中获取使用,传入参数:

  • name 选项变量名,须保证全局唯一性,否则会报“Option 'xxx' already defined in ...”的错误;
  • default 选项变量的默认值,如不传默认为None;
  • type 选项变量的类型,从命令行或配置文件导入参数的时候tornado会根据这个类型转换输入的值,转换不成功时会报错,可以是str、float、int、datetime、timedelta中的某个,若未设置则根据default的值自动推断,若default也未设置,那么不再进行转换。可以通过利用设置type类型字段来过滤不正确的输入。
  • multiple 选项变量的值是否可以为多个,布尔类型,默认值为False,如果multiple为True,那么设置选项变量时值与值之间用英文逗号分隔,而选项变量则是一个list列表(若默认值和输入均未设置,则为空列表[])。
  • help 选项变量的帮助提示信息,在命令行启动tornado时,通过加入命令行参数 --help 可以查看所有选项变量的信息(注意,代码中需要加入tornado.options.parse_command_line())。
  • 还有几个参数参考源码吧..

options.define中参数type

type remark eg
str    
basestring py3下同str 'asd'
int 整型  
float 浮点  
datetime
符合标准库
datetime.datetime
datetime.datetime(2013, 4, 28, 5, 16)
timedelta 符合标准库
datetime.timedelta
 
email 自定义: str 且含@   

类型也可以自定义,比如email

options.define('email', type=Email)

Email是一个写好的class 用来验证是否为email

class Email(object):
    def __init__(self, value):
        if isinstance(value, str) and '@' in value:
            self._value = value
        else:
            raise ValueError()

    @property
    def value(self):
        return self._value


使用姿势

tornado.options.parse_command_line()

转换命令行参数,并将转换后的值对应的设置到全局options对象相关属性上。追加命令行参数的方式是–myoption=myvalue

参数:final 如果为True,定义完变量后会执行一个callback函数,配合options.add_parse_callback(callback) 使用

操作姿势

options.parse_command_line() #直接用命令行参数
options.parse_command_line(["main.py", "--port=443"],final=True) #带参数
$ python opt.py --port=9000 

options.parse_config_file(config_path)

从文件读取配置

写法与python一致

port=443
username='ch168'
foo_bar='a'
my_path = __file__

操作姿势

config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                           "options_conf.py")
options.parse_config_file(config_path)

options.add_parse_callback(callback)

可以重复用 都会被执行

猜你喜欢

转载自blog.csdn.net/ty5622022/article/details/85167542