Maison  >  Article  >  développement back-end  >  Qu'est-ce que le workflow d'automatisation des tâches planifiées en ligne de commande Python ?

Qu'est-ce que le workflow d'automatisation des tâches planifiées en ligne de commande Python ?

王林
王林avant
2023-05-13 17:01:111622parcourir

1. Scénario d'utilisation

Exécutez régulièrement le script jmeter et exécutez les commandes de ligne de commande via le minuteur Python à intervalles réguliers.

2. Bibliothèque

os, datetime, threading

(1) Utilisez le minuteur threading.Timer() pour implémenter les tâches planifiées

Méthode Timer Explication
Timer(intervalle, fonction, args=Aucun, kwargs=Aucun) Créer un minuteur
cancel() Annuler le minuteur
start() Utiliser le mode thread pour exécuter
join(self, timeout=None) Attendre la fin de l'exécution du thread

La compréhension la plus élémentaire du minuteur est un minuteur, qui peut démarrer plusieurs tâches planifiées. Ces tâches du minuteur sont exécutées de manière asynchrone, il n'y a donc aucun problème d'attente pour une exécution séquentielle.

3. Exécutez le script

jmeter exécute la ligne de commande

jmeter -n -t nom du script.jmx -l nom du rapport du script.jtl

Description du paramètre :

  • n mode non-GUI, commande mode ligne (indique une exécution en mode non-GUI)

  • -t fichier de test, le fichier de script de test jmeter à exécuter (utilisez généralement un chemin absolu)

  • -l fichier de résultats, le fichier qui enregistre les résultats

  • -h Obtenez les informations d'aide de jmeter

  • -r Exécution à distance, démarrez le serveur distant (démarrez tous les agents distants configurés par les hôtes distants en mode non-gui)

  • -R Exécution à distance, (démarrez le serveur spécifié en mode non-gui Machine (IP : PORT) en tant que machine proxy)

  • -e Générer un rapport de test après avoir configuré le test

  • -o Spécifiez le dossier dans lequel le rapport de test est généré. Le dossier doit être vide/n'existe pas

  • - H hôte proxy (définissez l'hôte proxy utilisé par jmeter)

  • -P proxy port (définissez le port proxy utilisé par jmeter)

  • -X exit (sortie à la fin du test en mode non-gui)

4 .Script

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()

résultat d'exécution :

Quest-ce que le workflow dautomatisation des tâches planifiées en ligne de commande Python ?

5 Python tâches planifiées couramment utilisées

while True : +sleep()

. threading.Timer timer

La bibliothèque Timeloop exécute les tâches planifiées

module de planification planifié

Planification du module de planification

Cadre de tâches APScheduler

Le céleri du système de messagerie distribué exécute les tâches planifiées

Utilisez les tâches planifiées fournies avec Windows

6. méthodes pour appeler la ligne de commande avec python

(1) os.system

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

L'exécution du programme affichera la sortie La valeur de retour a est le code de sortie du programme

(2) os.popen

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

La valeur de retour. est un fichier fichier,

file.readlines() est la valeur de retour de la commande

(3) subprocess

Vous pouvez créer un sous-processus dans un programme python,

subprocess.call()

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

où, ' ls' correspond à la commande saisie sur la ligne de commande, et -l est l'opération correspondante. Renvoie le code de sortie du programme, similaire à os.system

subprocess.check_output('ls')

Renvoie la sortie standard, similaire à os.popen.

Vous pouvez également appeler l'objet Popen pour effectuer des opérations. subprocess

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

À ce stade, vous pouvez utiliser plusieurs commandes pour contrôler le sous-processus. Vous pouvez également utiliser subprocess.PIPE pour connecter l'entrée et la sortie de l'auto-processus...

(4) commandes

import commands
 commands.getoutput('ls')

Retour à la sortie du programme

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer