tornado二:tornado options

在上一篇文章中,启动http服务器时,将port写死了。当需要开启不同端口的http服务器时,将修改代码。

如果让port变得灵活?使用参数传递:tornado.options

tornado.options 用来定义全局参数、存储、转换
一、使用tornado.options.define()定义全局参数
define原型:
define(name,default=None,
                       type=None, help=None,
                       metavar=None,multiple=None,bool=False,
                       group=None,callback=None)
name:选项的变量名,必须保证其唯一性,否则会抛出option 'xxx"错误

default:设置选项变量的默认值
type:转换选项变量值为什么类型。如果没有设置type,则根据default的值 来转换变量值
multiple:设置选项变量是否可以为多个值,默认为False
from tornado.options import define
define("port", default=8000, type=int)
define("list", default=[], type=str)

 

二、使用全局参数:tornado.options.options.参数名称
所有定义的选项变量都会作为tornado.options.options对象的属性

from tornado.options import options
print options.port
print options.list

 

 三、在使用全局参数之前,要先获取全局参数
获取全局参数有两种方法:
1.从命令行获取: tornado.options.parse_command_line() 转换命令行参数为options的属性

2.从配置文件获取: tornado.options.parse_config_file(path) 从配置文件导入参数
示例:从命令行获取参数
#coding=utf-8
import tornado.web
import tornado.ioloop
from tornado.options import define
from tornado.options import options
from tornado.options import parse_command_line
define("port", default=8000, type=int)
define("list", default=[], type=str)

class IndexHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.write("this is return text")
if __name__ == '__main__':
    # 转换命令行参数,并保存到tornado.options.options
    parse_command_line()
    app = tornado.web.Application([
        (r'/', IndexHandler)
    ])
    import tornado.httpserver
    httpServer = tornado.httpserver.HTTPServer(app)
    httpServer.bind(options.port)
    httpServer.start(1)
    tornado.ioloop.IOLoop.current().start()
    # 启动server:python server02.py --port=9000 --list=good,nice,handsome,cool

 

 

示例:从配置文件中获取参数
创建普通文件config
port=8080
list=["good", "nice", "handsome"]
#coding=utf-8
import tornado.web
import tornado.ioloop
from tornado.options import options, define
from tornado.options import parse_config_file

define("port", default=8000, type=int)
define("list", default=[], type=str)

class IndexHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.write("this is return text")

if __name__ == '__main__':
    # 转换配置文件参数,并保存到tornado.options.options
    parse_config_file("config")
    app = tornado.web.Application([
        (r'/', IndexHandler)
    ])
    import tornado.httpserver
    httpServer = tornado.httpserver.HTTPServer(app)
    httpServer.bind(options.port)
    httpServer.start(1)
    tornado.ioloop.IOLoop.current().start()
    # 启动server:python server02.py --port=9000 --list=good,nice,handsome,cool

 

四、日志
当使用parse_command_line或parse_config_file(path)方法获取参数时:
tornado会默认开启logging模块功能--日志
会向服务器终端屏幕输出一些打印信息
如果使用配置文件时,关闭日志,加上代码:tornaod.options.options.logging = None
使用命令行获取参数时,关闭日志,在命令行加上参数: --logging=none
#coding=utf-8
import tornado.web
import tornado.ioloop
from tornado.options import options, define
from tornado.options import parse_config_file

define("port", default=8000, type=int)
define("list", default=[], type=str)

class IndexHandler(tornado.web.RequestHandler):
    def get(self, *args, **kwargs):
        self.write("this is return text")

if __name__ == '__main__':
    options.logging = None
    parse_config_file("config")
    app = tornado.web.Application([
        (r'/', IndexHandler)
    ])
    import tornado.httpserver
    httpServer = tornado.httpserver.HTTPServer(app)
    httpServer.bind(options.port)
    httpServer.start(1)
    tornado.ioloop.IOLoop.current().start()
    # 启动server:python server02.py --port=9000 --list=good,nice,handsome,cool

 

 
python server02.py --port=9000 --list=good,nice,handsome,cool --logging=none
























posted on 2018-07-22 23:14  myworldworld  阅读(621)  评论(0)    收藏  举报

导航