2017-10-31 15 views
0

Ich habe einige unabhängige Projekte in Python geschrieben, die ich gerne daily ausgeführt hätte. Ich werde crontab auf einem Ubunutu-Server verwenden, aber ich würde gerne ein script schreiben, um diese Projekte zu verwalten und am Ende einen Bericht mit Informationen darüber, welche Skripts fehlgeschlagen sind, welche Fehler sie erzeugt haben, wenn sie erfolgreich waren, Zeit zur Ausführung zu senden usw.Tägliche Python-Aufgabe crontab

Ich habe 2 Ideen, bitte helfen Sie mir zu entscheiden, welche besser ist oder mir eine bessere Lösung?

1: crontab führt eine Bash-Datei aus und diese Bash-Datei startet jedes Skript und berechnet die benötigte Zeit für die Ausführung.

2: crontab wird ein Python-Skript ausführen, die alle anderen Skripte ausführen wird und die Zeit, die sie usw. Englisch

Leider meine Hauptsprache ist nicht laufen verwenden berechnen.

+0

Warum werden einige Leute ohne Grund ablehnen? – Lowteast

Antwort

1

Gute Frage! Beide Lösungen sind durchaus machbar, aber es wird wahrscheinlich einfacher sein, ein Skript in Python zu schreiben (Lösung # 2).

Bash-Skripte sind großartig, aber wenn Sie hier ein Bash-Skript erstellen, müssen Sie ein weiteres Skript schreiben, das das Ergebnis all Ihrer anderen Skripte weitergegeben hat. Es wäre in etwa so aussehen:

##results.sh 
first_result = python script1.py 
second_result = python script2.py 
python email_results.py $first_result $second_result 

Mit dieser Methode wird es die Skripte und ist in der Regel ein wenig unhandlich und zu schwer sein.

Wenn Sie Python verwendet haben, könnten Sie time.time() verwenden, um die Zeit zu bestimmen, und es wäre in der Regel ein wenig sauberer.

##python 
import time 
import script1 

start = time.time() 
result = script1() 
end = time.time() 

time_elapsed = (end - start) 

email_results(result, time_elapsed) 

Hoffentlich hilft das! Viel Glück!

1

Hey ich habe ich Python verwendet, um es zu tun! Es ist so flexibel! Aber mein Skript nenne ich beschlossen, das „o“ Befehl zu verwenden:

folderList=next(os.walk('.'))[1] 
    for folder in folderList: 
     os.chdir(folder) 
     res =subprocess.Popen(["venv/bin/python", "main.py"],stdout=subprocess.PIPE,stderr=subprocess.PIPE) 
    os.chdir("..") 

Es funktioniert gut und führt all meine Skripte! Natürlich habe ich einen Exception Handler etc. hinzugefügt. Danke für deine Antwort! :)