1.使用場(chǎng)景:
定時(shí)執(zhí)行jmeter腳本,通過(guò)python定時(shí)器隔一段時(shí)間執(zhí)行命令行命令。
2.庫(kù):
os、datetime、threading
(1)利用threading.Timer()定時(shí)器實(shí)現(xiàn)定時(shí)任務(wù)
Timer方法 | 說(shuō)明 |
---|---|
Timer(interval, function, args=None, kwargs=None) | 創(chuàng)建定時(shí)器 |
cancel() | 取消定時(shí)器 |
start() | 使用線(xiàn)程方式執(zhí)行 |
join(self, timeout=None) | 等待線(xiàn)程執(zhí)行結(jié)束 |
?timer最基本理解就是定時(shí)器,可以啟動(dòng)多個(gè)定時(shí)任務(wù),這些定時(shí)器任務(wù)是異步執(zhí)行,所以不存在等待順序執(zhí)行問(wèn)題。
3.運(yùn)行腳本
jmeter執(zhí)行命令行
jmeter -n -t 腳本名稱(chēng).jmx -l 腳本報(bào)告名稱(chēng).jtl
參數(shù)說(shuō)明:
n 非GUI模式,命令行模式(表示在非GUI模式下運(yùn)行)
-t 測(cè)試文件, 要運(yùn)行的jmeter測(cè)試腳本文件(一般使用絕對(duì)路徑)
-l 結(jié)果文件,記錄結(jié)果的文件
-h 獲取jmeter幫助信息
-r 遠(yuǎn)程執(zhí)行,啟動(dòng)遠(yuǎn)程服務(wù)器(non-gui模式下啟動(dòng)remote-hosts配置的所有遠(yuǎn)程代理機(jī))
-R 遠(yuǎn)程執(zhí)行,(non-gui模式下啟動(dòng)指定的機(jī)器(IP:PORT)作為代理機(jī))
-e 設(shè)置測(cè)試完成后生成測(cè)試報(bào)表
-o 指定測(cè)試報(bào)表生成的文件夾,文件夾必須為空/不存在
-H 代理主機(jī)(設(shè)置jmeter使用的代理主機(jī))
-P 代理端口(設(shè)置jmeter使用的代理端口)
-X 退出(non-gui模式下測(cè)試結(jié)束時(shí)退出)
4.腳本
import os
from datetime import datetime
from threading import Timer
# 定時(shí)任務(wù)
def task():
now = datetime.now()
ts = now.strftime("%Y-%m-%d %H:%M:%S")
print(datetime.now())
a = os.system("jmeter -n -t /Users/liyinchi/workspace/功能測(cè)試/好慷/測(cè)試數(shù)據(jù)(壓測(cè)腳本)/階梯拼團(tuán)多維表格20230418.jmx -l /Users/liyinchi/workspace/功能測(cè)試/好慷/測(cè)試數(shù)據(jù)(壓測(cè)腳本)/階梯拼團(tuán)多維表格20230418-result.jtl")
print(a)
# 執(zhí)行器
def func():
task()
t = Timer(60*1, func)
t.start()
func()
執(zhí)行結(jié)果:?
?
5.python常用的定時(shí)任務(wù):
while True:+sleep()
threading.Timer定時(shí)器
Timeloop庫(kù)執(zhí)行定時(shí)任務(wù)
調(diào)度模塊sched
調(diào)度模塊schedule
任務(wù)框架APScheduler
分布式消息系統(tǒng)celery執(zhí)行定時(shí)任務(wù)
使用windows自帶的定時(shí)任務(wù)
6.四種方法用python調(diào)用命令行
(1)os.system
import os
a=os.system("ls")
a
運(yùn)行程序會(huì)顯示輸出,返回值a為程序退出碼
(2)os.popen
import os
a=os.popen("ls")
a.readline()
返回值為一個(gè)file文件,
file.readlines()為命令的返回值
(3)subprocess
可以在python程序中創(chuàng)建子進(jìn)程,
subprocess.call()
import subprocess
subprocess.call(['ls','-l' ])
其中,'ls’對(duì)應(yīng)命令行輸入的命令,-l為相應(yīng)的操作。返回程序退出碼,類(lèi)似于os.system
subprocess.check_output('ls')
返回標(biāo)準(zhǔn)輸出,類(lèi)似于os.popen。
也可以調(diào)用Popen對(duì)象來(lái)進(jìn)行操作。subprocess
import subprocess
child = subprocess.Popen('ping -c4 blog.linuxeye.com',shell=True)
此時(shí),可以用多個(gè)命令控制子進(jìn)程。也可以用subprocess.PIPE,將自進(jìn)程輸入輸出連接……文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-417385.html
(4)commands文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-417385.html
import commands
commands.getoutput('ls')
- 返回程序輸出
到了這里,關(guān)于python 定時(shí)任務(wù)執(zhí)行命令行的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!