【tornado】2.tornado.options模块

  • options模块可以定义全局的变量方便命令行传参到代码中
  • 需要引入模块:import tornado.options
基础的方法和属性:
定义变量的方法:

tornado.options.define(name,default=None,type=None,help=None,metavar=None,multiple=False,group=None,callback=None);

参数功能
name参数名称
default参数的默认值
type变量的类型
multiple参数是否可以有多个值,默认为False
help选项帮助信息

options属性:

tornado.options.options

所有定义好的变量都会成为该对象的一个属性

直接通过命令行获取参数的方法:

tornado.options.parse_command_line()

将命令行中的参数转换成options中的属性,这个方法没有参数,直接加入到代码中即可,一般加入到main函数的第一句

通过配置文件获取参数的方法:

tornado.options.parse_config_file(path)

通过配置文件给代码中的全局变量传值。path是配置文件的路径



三种传参方式的代码实现:
第一种:通过options模块传参
import tornado.web
import tornado.ioloop
import tornado.httpserver
import tornado.options  #要引入options模块

# 定义2个全局变量:
# 其中port是端口号,list是一个列表,用于展示通过命令行传参的过程,
# 没有特殊的意义
tornado.options.define("port",default=8000,type=int)
tornado.options.define("list",default=[],type=str,multiple=True)

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("test")

if __name__=="__main__":
    #转换命令行的参数,并传参到tornado.options.options中
    tornado.options.parse_command_line()

    # 测试命令行中的参数是否已经传进来
    print(tornado.options.options.list)
    print(tornado.options.options.port)

    app=tornado.web.Application([
        (r"/",IndexHandler)
    ])
    httpServer=tornado.httpserver.HTTPServer(app)
    httpServer.bind(tornado.options.options.port) #这里绑定的端口是options中的port属性
    httpServer.start(1)  
    # 我感觉上面这句代码是没必要的,但是实际操作下来这句代码是要加的,否则浏览器一直在转圈
    # 显示不了IndexHandler中的结果
    tornado.ioloop.IOLoop.current().start()

在命令行中输入:
在这里插入图片描述

然后显示port和list通过命令行传参后更新的结果:分别为端口号9000和列表[‘test1’,‘test2’,‘test3’]
此时在浏览器中输入:http://localhost.9000,可以看到如下内容:
在这里插入图片描述

第二种:通过options模块和普通配置文件来传参:
import tornado.web
import tornado.ioloop
import tornado.httpserver
import tornado.options

tornado.options.define("port",default=8000,type=int)
tornado.options.define("list",default=[],type=str,multiple=True)

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("test")

if __name__=="__main__":
    # 通过config文件传参到tornado.options.options中
    tornado.options.parse_config_file('config.py')

    # 测试命令行中的参数是否已经传进来
    print(tornado.options.options.list)
    print(tornado.options.options.port)

    app=tornado.web.Application([
        (r"/",IndexHandler)
    ])
    httpServer=tornado.httpserver.HTTPServer(app)
    httpServer.bind(tornado.options.options.port)
    httpServer.start(1)
    tornado.ioloop.IOLoop.current().start()

配置文件(config.py)中的内容:

port=9000
list=['test1','test2','test3']

此时直接运行代码即可,不用在命令行中输入参数的值了

第三种:不用options模块,直接使用.py文件传参

这种方式是主流的方式

import tornado.web
import tornado.ioloop
import tornado.httpserver
import config  # 引入config模块

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("test")

if __name__=="__main__":
    app=tornado.web.Application([
        (r"/",IndexHandler)
    ])
    httpServer=tornado.httpserver.HTTPServer(app)
    httpServer.bind(config.options["port"])  # 绑定参数port的值
    httpServer.start(1)
    tornado.ioloop.IOLoop.current().start()

配置文件config.py的内容:

options={
    "port":9000,
    "list":['test1','test2','test3']
}

这种方法下直接运行代码就可以运行服务器,不用在命令行中输入参数的值。




使用下面这2个语句时:

parse_command_line()
parse_config_file

tornado会启动logging日志模块,在终端打印信息。
如果要关闭这个功能,有2种方式:
1.在主函数的第一行添加:

tornado.options.options.logging=None

2 在命令行中输入参数:

–logging=none

例如可以输入:
python test.py --logging=none

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值