zoukankan      html  css  js  c++  java
  • tornado中的options常用姿势

    tornado是facebook开源的非阻塞web容器,类似java的netty,tornado.options是负责解析tornado容器的全局参数的,同时也能够解析命令行传递的参数和从配置文件中解析参数。使用步骤如下:

    1. 源码中的示例代码,定义全局变量:
    from tornado.options import define, options
    define("mysql_host", default="127.0.0.1:3306", help="Main user DB")
    define("memcache_hosts", default="127.0.0.1:11011", multiple=True,
           help="Main user memcache servers")
    def connect():
        db = database.Connection(options.mysql_host)
        ...
    
     
    
    1. 在模块的main函数中解析命令行参数或者配置文件
    Your ``main()`` method can parse the command line or parse a config file with
    either::
        tornado.options.parse_command_line()
        # or
        tornado.options.parse_config_file("/etc/server.conf")
    

    命令行参数格式:--myoption=myvalue

    配置文件可以是python文件,参数格式为:

    myoption = "myvalue"
    myotheroption = "myothervalue"
    
    1. Tornado.options默认是定义为单例模式的,通过tornado.options.options对象来维护全局参数,如果在线程中需要维护自己的变量,也可以使用tornado.options. OptionParser对象来维护参数。tornado.options.options就是通过实例OptionParser的对象来实现的,而且把define、parse_command_line、parse_config_file放到tornado.options 包中,可以直接使用,与调用tornado.options.options的方法是一致的。代码如下:
    options = OptionParser()
    """Global options object.
    All defined options are available as attributes on this object.
    """
    def define(name, default=None, type=None, help=None, metavar=None,
               multiple=False, group=None, callback=None):
        """Defines an option in the global namespace.
        See `OptionParser.define`.
        """
        return options.define(name, default=default, type=type, help=help,
                              metavar=metavar, multiple=multiple, group=group,
                              callback=callback)
    def parse_command_line(args=None, final=True):
        """Parses global options from the command line.
        See `OptionParser.parse_command_line`.
        """
        return options.parse_command_line(args, final=final)
    def parse_config_file(path, final=True):
        """Parses global options from a config file.
        See `OptionParser.parse_config_file`.
        """
        return options.parse_config_file(path, final=final)
    

    三种配置端口的方式

    第一种:在终端输入 端口以及其他配置

    # -*- coding: utf-8 -*-
    
    
    import tornado.web
    import tornado.ioloop
    import tornado.httpserver
    import tornado.options
    
    # tornado.options.define()
    # 用来定义options选项变量的方法
    tornado.options.define('port', default=8000, type=int)
    tornado.options.define('list', default=[],type=str)
    
    
    #     name  选项变量名,必须保证其唯一性,否则会报错 option‘xxx’
    class IndexHandler(tornado.web.RequestHandler):
        def get(self, *args, **kwargs):
            self.write("ojbk")
    
    
    if __name__ == '__main__':
        # 方式一: 在终端中配置 参数
        tornado.options.parse_command_line()  
        # 从终端中输入   python3 options.py --port=7979 --list=['goods','food']
        print('list:',tornado.options.options.list)
        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()
    
     # 从终端中输入   python3 options.py --port=7979 --list=['goods','food'] 
    
    

    第二种:在配置文件中导入 端口以及其他配置

    config文件:	
    port = 7000
    list = ['good','nice']
    
    # -*- coding: utf-8 -*-
    
    # tornado 为我们提供了一个便捷的 tornado.options 模块
    
    # 作用:
    # 1.全局参数的定义,存储,转换
    
    
    import tornado.web
    import tornado.ioloop
    import tornado.httpserver
    import tornado.options
    
    # tornado.options.define()
    # 用来定义options选项变量的方法
    tornado.options.define('port', default=8000, type=int)
    tornado.options.define('list', default=[])
    
    
    #     name  选项变量名,必须保证其唯一性,否则会报错 option‘xxx’
    class IndexHandler(tornado.web.RequestHandler):
        def get(self, *args, **kwargs):
            self.write("ojbk")
    
    
    if __name__ == '__main__':
        # 方式二: 从 配置文件中获取配置参数
        tornado.options.parse_config_file("config")  # 从配置文件加载配置
        print('list:',tornado.options.options.list)
        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
    
    options = {
        'port': 8910,
        'list': ['fgooo', 'sdf']
    }
    
    # -*- coding: utf-8 -*-
    
    
    import tornado.web
    import tornado.ioloop
    import tornado.httpserver
    import tornado.options
    import config
    
    
    #     name  选项变量名,必须保证其唯一性,否则会报错 option‘xxx’
    class IndexHandler(tornado.web.RequestHandler):
        def get(self, *args, **kwargs):
            self.write("ojbk")
    
    
    if __name__ == '__main__':
        # 方式二: 在py文件中导入 参数
        print('list:',config.options.get('list'))
        app = tornado.web.Application([
            (r'/', IndexHandler)
        ])
        
        httpServer = tornado.httpserver.HTTPServer(app)
        httpServer.bind(config.options.get('port'))
        httpServer.start(1)
        tornado.ioloop.IOLoop.current().start()
    
    
    
  • 相关阅读:
    排序系列 之 希尔排序算法 —— Java实现
    排序系列 之 快速排序算法 —— Java实现
    排序系列 之 冒泡排序及其改进算法 —— Java实现
    排序系列 之 折半插入排序算法 —— Java实现
    排序系列 之 直接插入排序算法 —— Java实现
    Three.js入门篇(一)创建一个场景
    THREE.JS(如何想场景中添加物体对象)
    Tween.js 动画效果
    js柯里化
    node path模块
  • 原文地址:https://www.cnblogs.com/qianzhengkai/p/11341190.html
Copyright © 2011-2022 走看看