首頁 > 軟體

Python命令列定時任務自動化工作流程

2023-09-07 18:00:31

1.使用場景

定時執行jmeter指令碼,通過python定時器隔一段時間執行命令列命令。

2.庫

os、datetime、threading

(1)利用threading.Timer()定時器實現定時任務

Timer方法說明
Timer(interval, function, args=None, kwargs=None)建立定時器
cancel()取消定時器
start()使用執行緒方式執行
join(self, timeout=None)等待執行緒執行結束

timer最基本理解就是定時器,可以啟動多個定時任務,這些定時器任務是非同步執行,所以不存在等待順序執行問題。

3.執行指令碼

jmeter執行命令列

jmeter -n -t 指令碼名稱.jmx -l 指令碼報告名稱.jtl

引數說明:

  • n 非GUI模式,命令列模式(表示在非GUI模式下執行)
  • -t 測試檔案, 要執行的jmeter測試指令碼檔案(一般使用絕對路徑)
  • -l 結果檔案,記錄結果的檔案
  • -h 獲取jmeter幫助資訊
  • -r 遠端執行,啟動遠端伺服器(non-gui模式下啟動remote-hosts設定的所有遠端代理機)
  • -R 遠端執行,(non-gui模式下啟動指定的機器(IP:PORT)作為代理機)
  • -e 設定測試完成後生成測試報表
  • -o 指定測試報表生成的資料夾,資料夾必須為空/不存在
  • -H 代理主機(設定jmeter使用的代理主機)
  • -P 代理埠(設定jmeter使用的代理埠)
  • -X 退出(non-gui模式下測試結束時退出)

4.指令碼

import os
from datetime import datetime
from threading import Timer
# 定時任務
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/功能測試/好慷/測試資料(壓測指令碼)/階梯拼團多維表格20230418.jmx -l /Users/liyinchi/workspace/功能測試/好慷/測試資料(壓測指令碼)/階梯拼團多維表格20230418-result.jtl")
    print(a)
# 執行器
def func():
    task()
    t = Timer(60*1, func)
    t.start()
func()

執行結果:

5.python常用的定時任務

while True:+sleep()

threading.Timer定時器

Timeloop庫執行定時任務

排程模組sched

排程模組schedule

任務框架APScheduler

分散式訊息系統celery執行定時任務

使用windows自帶的定時任務

6.四種方法用python呼叫命令列

(1)os.system

import os
a=os.system("ls")
a

執行程式會顯示輸出,返回值a為程式退出碼

(2)os.popen

import os
a=os.popen("ls")
a.readline()

返回值為一個file檔案,

file.readlines()為命令的返回值

(3)subprocess

可以在python程式中建立子程序,

subprocess.call()

import subprocess
 subprocess.call(['ls','-l' ])

其中,'ls’對應命令列輸入的命令,-l為相應的操作。返回程式退出碼,類似於os.system

subprocess.check_output('ls')

返回標準輸出,類似於os.popen。

也可以呼叫Popen物件來進行操作。subprocess

import subprocess
child = subprocess.Popen('ping -c4 blog.linuxeye.com',shell=True)

此時,可以用多個命令控制子程序。也可以用subprocess.PIPE,將自程序輸入輸出連線……

(4)commands

import commands
 commands.getoutput('ls')

返回程式輸出

到此這篇關於Python命令列定時任務自動化工作流程的文章就介紹到這了,更多相關Python命令列定時任務內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com