CodeGym /Kurse /Python SELF DE /Einrichten von wiederkehrenden Aufgaben (tägliche und wöc...

Einrichten von wiederkehrenden Aufgaben (tägliche und wöchentliche Erinnerungen)

Python SELF DE
Level 40 , Lektion 0
Verfügbar

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.

Python

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.

Python

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:

Python

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.

Python

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.

Python

# 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.

Python

# 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.

Python

# 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.

Python

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.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION