tornado options 配置

对象属性

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

typeremarkeg
str  
basestringpy3下同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)

可以重复用 都会被执行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值