大数跨境
0
0

python脚本--linux定时执行压测任务

python脚本--linux定时执行压测任务 橙子好甜
2024-12-19
0
导读:每天学习一点点。
场景:凌晨2点数据库有个合并任务,导致数据库cpu较高接近70%。要做项目稳定性压测需12个小时,为避开陵城2点这个时间,编写一个定时任务脚本执行 jmeter压测。jmeter的压测写成了一个run.sh 的shell脚本,避免linux回话结束,jmeter的压测任务结束。
脚本名称:  exec_task.py
from apscheduler.schedulers.background import BackgroundSchedulerfrom apscheduler.triggers.cron import CronTriggerimport subprocessimport timedef task():    try:        # 构造命令和参数        command = [            "bash", "./run.sh",            "THREAD_COUNT_GROUP1=200",            "LOOP_COUNT_GROUP1=-1",            "RAMP_UP_GROUP1=20",            "DURATION_GROUP1=1820",            "ENABLE_CONTROLLER_7=true"        ]        # 执行命令        result = subprocess.run(command, capture_output=True, text=Truecheck=True)        # 打印 Shell 脚本的输出        print(f"任务执行成功: {result.stdout}")    except subprocess.CalledProcessError as e:        # 捕获脚本执行错误        print(f"任务执行失败: {e.stderr}")# 创建调度器scheduler = BackgroundScheduler()# 添加任务,每天 21:30:15 执行trigger = CronTrigger(hour=14minute=40second=0)scheduler.add_job(task, trigger)# 开始调度器scheduler.start()try:    while True:        time.sleep(1)except (KeyboardInterrupt, SystemExit):    scheduler.shutdown()
上述脚本利用subprocess执行运行命令。下面位执行的命令数据。subprocess.run执行命令
command = [            "bash""./run.sh",            "THREAD_COUNT_GROUP1=200",            "LOOP_COUNT_GROUP1=-1",            "RAMP_UP_GROUP1=20",            "DURATION_GROUP1=1820",            "ENABLE_CONTROLLER_7=true"        ]
利用apscheduler执行定时任务。指定每天运行时间。弊端:设置成每天执行后,需要命令 ps -ef|grep python去杀掉对应的python进程,如果不想每天定时运行,apscheduler可以指定运行的年月日时分秒。
trigger = CronTrigger(hour=14minute=40second=0)

【声明】内容源于网络
0
0
橙子好甜
人生苦短,我用python --it测试狗
内容 30
粉丝 0
橙子好甜 人生苦短,我用python --it测试狗
总阅读0
粉丝0
内容30