编写脚本的基本基础结构
basescript的Python项目详细描述
python是一种优秀的语言,它使编写脚本变得非常 直截了当。在写很多剧本的过程中,我们意识到 我们一遍又一遍地做一些事情比如创建一个记录器 接受命令行参数。基本脚本非常简单 负责设置日志和其他基础知识的抽象 您可以专注于特定于应用程序的逻辑。
下面是基本脚本提供的一些功能:-日志记录-接受 使用argparse的命令行参数
安装
pip install basescript
用法
下面是一个简单的开始示例
你好世界
helloworld.py
frombasescriptimportBaseScriptclassHelloWorld(BaseScript):defrun(self):print"Hello world"if__name__=='__main__':HelloWorld().start()NOTE:allexamplesshowcasedhereareavailableunderthe``examples``directory
执行以下操作来运行上述操作:
python helloworld.py run
运行日志级别设置为“调试”的脚本
python helloworld.py --log-level DEBUG run
使用自定义日志文件运行脚本
python helloworld.py --log-level DEBUG --log mylog run
命令行参数,使用记录器
下面是一个更复杂的示例
加法器.py
frombasescriptimportBaseScriptclassAdder(BaseScript):# The following specifies the script description so that it be used# as a part of the usage doc when --help option is used during running.DESC='Adds numbers'def__init__(self):super(Adder,self).__init__()self.a=10self.b=20defdefine_args(self,parser):parser.add_argument('c',type=int,help='Number to add')defrun(self):self.log.info("Starting run of script ...")printself.a+self.b+self.args.cself.log.info("Script is done")if__name__=='__main__':Adder().start()
按如下所示运行脚本并观察所示的使用信息。注意 说明如何与c参数一起出现。
python adder.py --help usage: adder.py [-h][--name NAME][--log-level LOG_LEVEL][--log-format {json,pretty}][--log-file LOG_FILE][--quiet][--metric-grouping-interval METRIC_GROUPING_INTERVAL][--debug]{run} ... Adds numbers optional arguments: -h, --help show this help message and exit --name NAME Name to identify this instance --log-level LOG_LEVEL Logging level as picked from the logging module --log-format {json,pretty} Force the format of the logs. By default, if the command is from a terminal, print colorful logs. Otherwise print json. --log-file LOG_FILE Writes logs to log file if specified, default: None --quiet if true, does not print logs to stderr, default: False --metric-grouping-interval METRIC_GROUPING_INTERVAL To group metrics based on time interval ex:10 i.e;(10 sec) --debug To run the code in debug mode commands: {run}
python adder.py run --help usage: adder.py run [-h] c positional arguments: c Number to add optional arguments: -h, --help show this help message and exit
立即运行脚本以查看预期的输出
python adder.py run 3060
在启用信息和更高级别日志的情况下运行相同的操作
python adder.py --log-level INFO 302016-04-10 13:48:27,356 INFO Starting run of script ... 602016-04-10 13:48:27,356 INFO Script is done
--log-level接受 https://docs.python.org/2/library/logging.html#logging-levels。
log是使用python的标准^{tt4}创建的日志对象$ 模块。你可以在 https://docs.python.org/2/library/logging.html。
度量分组
使用self.log编写Metric时,可以指定 type=metric。如果完成此操作,后台线程将自动 通过平均值将多个度量组合为一个(以防止写入 日志行太多)。test.py
from basescript import BaseScript import time import random class Stats(BaseScript): def __init__(self): super(Stats, self).__init__() def run(self): ts = time.time() while True: # Metric Format. self.log.info("stats", time_duration=(time.time()-ts), type="metric", random_number=random.randint(1, 50)) if __name__ == '__main__': Stats().start()
运行命令以查看输出。
python test.py --metric-grouping-interval 5 run