1. Einführung in die Bibliothek schedule
In dieser Vorlesung werden wir wie echte Uhrmechanismen lernen, Aufgaben nach Zeitplan zu starten, damit unser Code dann funktioniert, wenn wir es wollen. Macht euch bereit, heute werden wir die Zeit zähmen!
Die Bibliothek schedule
ist ein leichtgewichtiger Modul für das Ausführen von Funktionen nach einem bestimmten Zeitplan. Wenn dein Code zu bestimmten Zeiten ausgeführt werden muss, z.B. jeden Tag um 6 Uhr morgens Daten sammeln oder tägliche Erinnerungen senden, dann ist schedule
genau das Richtige für dich.
Hier sind die Hauptvorteile von schedule
:
- Einfachheit: Eine intuitive Benutzeroberfläche, die viel einfacher zu verwenden ist als die Standardlösung mit
cron
oderthreading
. - Minimalismus: Keine überflüssigen Funktionen – nur die, die du wirklich brauchst.
- Verständlichkeit: Verwendung einer fast natürlichen Sprache zur Festlegung von Zeitplänen.
Installation der Bibliothek
Um loszulegen, musst du die Bibliothek schedule
installieren. Wie bei den meisten Python-Bibliotheken verwenden wir pip
:
pip install schedule
Jetzt, da alles bereit ist, tauchen wir in die Welt der Automatisierung ein und sehen, wie schedule
deinen Alltag verändern kann.
Hauptmethoden der Bibliothek schedule
Die Bibliothek schedule
bietet Methoden zum Einrichten von Aufgaben zu unterschiedlichen Zeiten und mit unterschiedlichen Ausführungsfrequenzen:
every().day.at("HH:MM")
— Aufgabe wird jeden Tag zu einer bestimmten Zeit ausgeführt.every().hour
— Aufgabe wird jede Stunde ausgeführt.every().minute
— Aufgabe wird jede Minute ausgeführt.every().week.at("HH:MM")
— Aufgabe wird jede Woche zu einer bestimmten Zeit ausgeführt.every().monday.at("HH:MM")
— Aufgabe wird jeden Montag zu einer bestimmten Zeit ausgeführt.every(10).seconds
— Aufgabe wird alle 10 Sekunden (oder jede beliebige andere Zeitspanne) ausgeführt.
2. Einrichtung wiederkehrender Aufgaben
Beginnen wir mit etwas Einfachem – wir planen eine Funktion, die jede Stunde ausgeführt wird. Wir erstellen eine einfache Funktion, die eine Begrüßungsnachricht ausgibt, und führen sie nach Zeitplan aus.
Beispiel: stündliche Begrüßung
import schedule
import time
def say_hello():
print("Hallo! Wir arbeiten hier an stündlicher Automatisierung.")
# Funktion say_hello jede Stunde ausführen
schedule.every().hour.do(say_hello)
while True:
# Führt alle Aufgaben aus, deren Zeit gekommen ist
schedule.run_pending()
time.sleep(1)
Das war's schon – dein erstes Skript mit schedule
! In diesem Beispiel verwenden wir die Methode
every().hour.do(say_hello)
, um jede Stunde "Hallo!" zu sagen. Cool, oder?
Der Befehl schedule.every().hour.do(say_hello)
führt die Funktion say_hello
nicht sofort aus, sondern fügt ihren Aufruf in den Zeitplan ein. Der tatsächliche Funktionsaufruf erfolgt, wenn die Zeit gekommen ist – durch den Code schedule.run_pending()
.
3. Komplexere Intervalle einstellen
Was, wenn wir Aufgaben nicht nur jede Stunde, sondern z.B. auch alle 10 Minuten oder an bestimmten Wochentagen ausführen möchten? schedule
unterstützt die meisten gängigen Zeitausdrücke, und du kannst sie genauso leicht verwenden.
Beispiel: Aufgabe alle 10 Minuten ausführen
import schedule
import time
def task():
print("Diese Aufgabe wird alle 10 Minuten ausgeführt.")
# Aufgabe alle 10 Minuten planen
schedule.every(10).minutes.do(task)
while True:
schedule.run_pending() # Führt alle Aufgaben aus, deren Zeit gekommen ist
time.sleep(1)
Beispiel: Aufgabe an bestimmten Tagen ausführen
Und nun versuchen wir, eine Aufgabe zu planen, die an bestimmten Wochentagen ausgeführt wird, z.B. montags und mittwochs, aber nur um 9 Uhr morgens.
import schedule
import time
def monday_wednesday_task():
print("Diese Aufgabe wird montags und mittwochs um 9 Uhr morgens ausgeführt.")
# Aufgabe montags und mittwochs um 9 Uhr morgens ausführen
schedule.every().monday.at("09:00").do(monday_wednesday_task)
schedule.every().wednesday.at("09:00").do(monday_wednesday_task)
while True:
schedule.run_pending()
time.sleep(1)
Wie du siehst, verarbeitet schedule
verschiedene Zeitausdrücke, einschließlich Wochentagen und genauen Ausführungszeiten. Das ist unglaublich praktisch für die Planung von Aufgaben, die mit deiner Arbeit oder geplanten Ereignissen synchronisiert sind.
4. Umgang mit Aufgaben mit unterschiedlichen Zeitbedingungen
Wenn dein Skript mehrere Aufgaben ausführt und jede von ihnen ihren eigenen Zeitplan hat, erledigt schedule
dies problemlos. Zum Beispiel kann eine Aufgabe jeden Morgen und eine andere jeden Freitag ausgeführt werden.
Beispiel: Verschiedene Aufgaben in einem Skript kombinieren
import schedule
import time
def morning_task():
print("Guten Morgen! Zeit für die Morgenaufgabe.")
def friday_task():
print("Juhu, Freitag! Zeit für die Freitagsaufgabe.")
# Morgenaufgaben jeden Morgen um 7:30
schedule.every().day.at("07:30").do(morning_task)
# Freitagsaufgaben jeden Freitag um 16:00
schedule.every().friday.at("16:00").do(friday_task)
while True:
schedule.run_pending()
time.sleep(1)
Praktische Tipps und häufige Fehler
Wenn es darum geht, Aufgaben mit schedule
zu automatisieren, gibt es ein paar Aspekte, die du beachten solltest.
Erstens, denke daran, dass schedule
Aufgaben im Hauptthread ausführt. Das bedeutet, dass du bei langen Aufgaben oder solchen, die die Ausführung anderer Aufgaben blockieren könnten, über Multithreading oder asynchrone Aufrufe nachdenken solltest.
Zweitens, wenn deine Aufgabe zu einer festen Zeit ausgeführt werden muss und das kritisch ist, stelle sicher, dass dein Gerät eingeschaltet ist und das Skript läuft. schedule
funktioniert nicht, wenn das Skript gestoppt oder das Gerät ausgeschaltet ist.
Und schließlich ein häufiger Irrglaube – die Erwartung, dass schedule
verpasste Aufgaben nachträglich ausführen kann. Leider, wenn dein Skript nicht ausgeführt wurde, als die Aufgabe hätte abgeschlossen werden sollen, wird schedule
sie nicht nachträglich ausführen.
GO TO FULL VERSION