1. Eine einfache Aufgabe einrichten
Fangen wir mit dem einfachsten Beispiel an: Wie können wir unseren Code dazu bringen, uns jeden Tag daran zu erinnern, unsere E-Mails zu überprüfen.
import schedule
import time
def job():
print("Erinnerung: Überprüfe deine E-Mails!")
# Aufgabe für den täglichen Start einrichten
schedule.every().day.at("09:00").do(job)
while True:
schedule.run_pending()
time.sleep(1)
In diesem Beispiel wird die Funktion job
jeden Tag um 9 Uhr morgens ausgeführt. Die Library schedule
überprüft jede Sekunde mit run_pending()
, ob geplante Aufgaben anstehen. Vergiss nicht, dass dein Code ständig laufen muss, damit die Aufgabe ausgeführt wird.
Hinweise für coole Hacker
Beachte, dass du every().hour
verwenden kannst, um eine Aufgabe jede Stunde auszuführen, oder every(2).hours
, um sie alle zwei Stunden auszuführen. Die Möglichkeiten sind fast unbegrenzt.
2. Erinnerungen an Werktagen
Machen wir es jetzt ein wenig komplizierter: Angenommen, du brauchst eine Erinnerung nur an Werktagen. Zum Beispiel möchten wir jeden Arbeitstag die gleiche Erinnerung erhalten.
import schedule
import time
def weekday_job():
print("Arbeits-Erinnerung: Vergiss nicht, den Bericht vorzubereiten!")
schedule.every().monday.at("08:00").do(weekday_job)
schedule.every().tuesday.at("08:00").do(weekday_job)
schedule.every().wednesday.at("08:00").do(weekday_job)
schedule.every().thursday.at("08:00").do(weekday_job)
schedule.every().friday.at("08:00").do(weekday_job)
while True:
schedule.run_pending()
time.sleep(1)
In diesem Fall bekommst du jeden Werktag um 8 Uhr morgens eine Erinnerung, den Bericht vorzubereiten. So wird dein Skript immer den Zeitplan überwachen, auch wenn du es vergisst.
3. Wöchentliche Aufgaben einrichten
Was ist, wenn du jeden Sonntag eine Erinnerung erhalten möchtest? Angenommen, du willst die Kaffeebestände vor der Arbeitswoche überprüfen. Schauen wir uns an, wie das gemacht wird:
import schedule
import time
def sunday_job():
print("Erinnerung: Überprüfe die Kaffeebestände für die nächste Woche!")
schedule.every().sunday.at("18:00").do(sunday_job)
while True:
schedule.run_pending()
time.sleep(1)
Dieser kleine Code-Schnipsel bringt ein bisschen Ordnung in deinen Sonntag und erinnert dich daran, sich auf die kommende Woche vorzubereiten. Dein Kaffee geht dir nie mehr unerwartet aus. Ja, ich weiß, das wäre eine Tragödie für viele.
4. Aufgaben ändern
Aufgaben aus dem Zeitplan löschen
Wenn du eine Aufgabe abbrechen möchtest, kannst du die Methode cancel_job()
verwenden. Um eine Aufgabe aus dem Zeitplan zu entfernen, kannst du das Aufgabenobjekt abrufen und cancel_job()
darauf anwenden.
job = schedule.every().day.at("09:00").do(daily_task)
schedule.cancel_job(job) # Aufgabe aus dem Zeitplan löschen
Aufgabe verschieben
Um die Ausführungszeit einer Aufgabe zu ändern, kannst du den Zeitplan erneut festlegen. Wenn die Aufgabe beispielsweise um 9:00 Uhr geplant war, sie jetzt aber auf 10:00 Uhr verschoben werden soll, kannst du ihren Zeitplan umschreiben.
# Plane Aufgabe für jeden Tag um 9:00
job = schedule.every().day.at("09:00").do(my_task)
# Aufgabe auf 10:00 verschieben
job.clear() # Aktuellen Zeitplan der Aufgabe löschen
job.at("10:00") # Auf neue Uhrzeit verschieben
Aktive Aufgaben überprüfen
Um zu überprüfen, ob geplante Aufgaben vorhanden sind, kannst du die Liste aller aktiven Aufgaben mit schedule.jobs
ausgeben. Das ist nützlich, wenn du Informationen über alle geplanten Aufgaben benötigst.
# Füge mehrere Aufgaben hinzu
schedule.every().day.at("09:00").do(my_task)
schedule.every().monday.at("10:00").do(my_task)
# Zeige alle aktiven Aufgaben an
for job in schedule.jobs:
print("Aufgabe:", job)
Alle Aufgaben aus dem Zeitplan entfernen
Um den Zeitplan zu löschen und alle geplanten Aufgaben zu entfernen, kannst du die Methode clear()
verwenden.
# Plane mehrere Aufgaben
schedule.every().day.at("09:00").do(my_task)
schedule.every().hour.do(my_task)
# Zeitplan löschen
schedule.clear()
Aufgabe nur einmal ausführen
Manchmal musst du eine Aufgabe nur einmal zu einem bestimmten Zeitpunkt ausführen. Nach der Ausführung dieser Aufgabe kannst du die Methode schedule.cancel_job(job)
verwenden, um sie abzubrechen.
def one_time_task():
print("Aufgabe wurde einmal ausgeführt")
return schedule.CancelJob # Aufgabe nach Ausführung abbrechen
# Plane Aufgabe einmal auszuführen
schedule.every().day.at("09:00").do(one_time_task)
while True:
schedule.run_pending()
time.sleep(1)
5. Praktische Anwendungen
Jetzt mal etwas ernster: Wie wird so eine Automatisierung im professionellen Umfeld eingesetzt? Im echten Leben kannst du die Planung von Aufgaben verwenden für:
- Automatisches Sammeln von Daten jeden Tag oder jede Woche.
- Erstellung und Versand von Berichten an einem bestimmten Tag und zu einer bestimmten Uhrzeit.
- Überwachung des Status deines Servers oder Webinterfaces mit Fehlerbenachrichtigungen.
- Durchführung regelmäßiger Backups von Datenbanken.
Typische Fehler
Während du Aufgaben planst, achte auf Zeitabweichungen, z. B. wenn dein Server und dein lokaler Computer in unterschiedlichen Zeitzonen sind. Außerdem: Wenn dein Skript versehentlich beendet wird, werden geplante Aufgaben nicht ausgeführt. Verwende Monitoring-Tools wie cron (für Unix-ähnliche Systeme) oder den Windows Task Scheduler.
Wenn du versehentlich vergisst, time.sleep(1)
am Ende deiner Schleife hinzuzufügen, erzeugst du einen Prozess, der die CPU ohne Unterbrechung belastet – wie ein hyperaktiver Code. Halte dein Skript also in gutem Zustand.
GO TO FULL VERSION