6-tornado配置文件的使用(命令行解析、文件设置)

tornado.options

python 复制代码
options 可以让服务运行前提前设置参数,而常见的2种设置参数方式为:

1. 命令行设置
2. 文件设置

命令行解析

使用tornado.options.define前定义,通常在模块的顶层。

然后,可以将这些选项作为以下属性的属性进行访问tornado.options.options

但要解析命令行参数时,需要使用tornado.options.parse_command_line来解析参数

具体代码如下:

python 复制代码
# main.py
import time
from tornado import web
import tornado
from tornado.options import define, options, parse_command_line

#define, 定义一些可以在命令行中传递的参数以及类型
define('port', default=8008, help="port to listen on", type=int)
define('debug', default=True, help="set tornado debug mode", type=bool)

#parse_command_line()
#options是一个类,全局只有一个options
class IndexHandler(web.RequestHandler):
    async def get(self):
        self.write("hello Tornado")

class IndexHandler2(web.RequestHandler):
    async def get(self):
        self.write("hello Tornado 你好")

if __name__ == "__main__":
    app = web.Application([
        ("/", IndexHandler),
        ("/index/", IndexHandler2)
    ], debug=options.debug)
    app.listen(options.port)
    tornado.ioloop.IOLoop.current().start()

文件设置

创建文件server.conf,将必要的参数直接写入即可

python 复制代码
port=8000
debug=True

设置好文件后,通过tornado.options.parse_config_file来解析

tip
有了以上方法,就可更新的设置服务器的各种通用参数了,如数据库参数、文件目录参数、服务器参数等

代码演练

python 复制代码
from tornado import web, ioloop
from tornado.options import define, options, parse_config_file

# 定义key来接收传递进来的参数
define('port', default=8000, help='port to listen on', type=int)
define('debug', default=True, help='set debug mode', type=bool)

# 解析文件传递进来的参数
parse_config_file('./server.conf')


class IndexHandler(web.RequestHandler):
    async def get(self):  # 协程
        self.write('Hello Tornado!!123123')


if __name__ == '__main__':
    app = web.Application([
        ('/', IndexHandler)
    ],
        # debug=True
        debug=options.debug
    )
    # app.listen(8000)
    app.listen(options.port)
    ioloop.IOLoop.current().start()
相关推荐
纪元A梦3 分钟前
华为OD机试真题——绘图机器(2025A卷:100分)Java/python/JavaScript/C++/C/GO最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
会飞的鱼先生6 分钟前
Vue3的内置组件 -实现过渡动画 TransitionGroup
前端·javascript·vue.js·vue
晓得迷路了6 分钟前
10 分钟开发一个 Chrome 插件?Trae 让你轻松实现!
前端·javascript·trae
秋天的一阵风12 分钟前
Vue3探秘系列— 路由:vue-router的实现原理(十六-上)
前端·vue.js·面试
秋天的一阵风13 分钟前
Vue3探秘系列— 路由:vue-router的实现原理(十六-下)
前端·vue.js·面试
24k小善17 分钟前
FlinkSql入门与实践
java·大数据·flink·云计算
CodeCraft Studio31 分钟前
Excel处理控件Spire.XLS系列教程:Java设置Excel活动工作表或活动单元格
java·python·excel
海底火旺32 分钟前
JavaScript中的Object方法完全指南:从基础到高级应用
前端·javascript·面试
海底火旺33 分钟前
JavaScript中的Symbol:解锁对象属性的新维度
前端·javascript·面试
天天扭码34 分钟前
一文吃透 ES6新特性——解构语法
前端·javascript·面试