CodeGym /Kursy /Python SELF PL /Używanie biblioteki schedule do uruchamiania zadań według...

Używanie biblioteki schedule do uruchamiania zadań według harmonogramu

Python SELF PL
Poziom 39 , Lekcja 4
Dostępny

1. Wprowadzenie do biblioteki schedule

W tym wykładzie, jak prawdziwe mechanizmy zegarowe, nauczymy się uruchamiać zadania według harmonogramu, aby nasz kod działał wtedy, kiedy tego chcemy. Przygotuj się, dziś oswoimy czas!

Biblioteka schedule — to lekki moduł do uruchamiania funkcji w określonym harmonogramie. Jeśli twój kod musi być wykonywany według określonego harmonogramu, na przykład, zbierać dane codziennie o 6 rano lub wysyłać codzienne przypomnienia, to schedule — jest tym, czego potrzebujesz.

Oto główne zalety schedule:

  • Prostota: intuicyjny interfejs, który jest dużo prostszy w użyciu niż standardowe rozwiązania poprzez cron lub threading.
  • Minimalizm: brak zbędnych funkcji — tylko te, które są potrzebne.
  • Zrozumiałość: używanie niemal naturalnego języka do określania harmonogramu.

Instalacja biblioteki

Na początku pracy należy zainstalować bibliotekę schedule. Jak w przypadku większości bibliotek Python, korzystamy z pip:

Bash
pip install schedule

Teraz, gdy wszystko jest gotowe, zanurzmy się w świat automatyzacji i zobaczmy, jak schedule może zmienić twoją codzienną pracę.

Główne metody biblioteki schedule

Biblioteka schedule dostarcza metody do ustawiania zadań na różne czasy i z różną częstotliwością wykonywania:

  • every().day.at("HH:MM") — wykonanie zadania każdego dnia o określonej godzinie.
  • every().hour — wykonanie zadania co godzinę.
  • every().minute — wykonanie zadania co minutę.
  • every().week.at("HH:MM") — wykonanie zadania raz w tygodniu o określonym czasie.
  • every().monday.at("HH:MM") — wykonanie zadania w poniedziałki o określonym czasie.
  • every(10).seconds — wykonanie zadania co 10 sekund (lub dowolny inny okres czasu).

2. Ustawienia cyklicznych zadań

Zacznijmy od czegoś prostego — zaplanujmy funkcję, która będzie wykonywana co godzinę. Stworzymy prostą funkcję, która wypisuje powitanie i uruchomimy ją według harmonogramu.

Przykład: powitanie co godzinę

Python

import schedule
import time

def say_hello():
    print("Cześć! Pracujemy w automatyzacji godzinnej.")

# Uruchamiamy funkcję say_hello co godzinę
schedule.every().hour.do(say_hello)

while True:
    # Wykonuje wszystkie zadania, których czas nadszedł
    schedule.run_pending()
    time.sleep(1)

Ot i wszystko — twój pierwszy skrypt z schedule! W tym przykładzie używamy metody every().hour.do(say_hello), aby mówić "Cześć!" co godzinę. Ciekawe, prawda?

Komenda schedule.every().hour.do(say_hello) nie wykonuje funkcji say_hello, a dodaje jej wywołanie do harmonogramu. Faktyczne wywołanie funkcji nastąpi, gdy nadejdzie jej czas - zostanie wywołana za pomocą kodu schedule.run_pending().

3. Ustawienie bardziej skomplikowanych interwałów

A co, jeśli chcemy uruchamiać zadania nie tylko co godzinę, ale na przykład co 10 minut lub w określone dni tygodnia? schedule obsługuje większość popularnych wyrażeń czasowych i możesz używać ich z równie dużą łatwością.

Przykład: uruchamianie zadania co 10 minut

Python

import schedule
import time

def task():
    print("To zadanie jest wykonywane co 10 minut.")

# Zaplanujmy uruchamianie zadania co 10 minut
schedule.every(10).minutes.do(task)

while True:
    schedule.run_pending() # Wywołujemy wszystkie zadania, których czas nadszedł
    time.sleep(1)

Przykład: uruchamianie zadania w określone dni

A teraz spróbujmy zaplanować zadanie, które będzie wykonywane w określone dni tygodnia, na przykład w poniedziałki i środy, ale tylko o 9 rano.

Python

import schedule
import time

def monday_wednesday_task():
    print("To zadanie jest wykonywane w poniedziałki i środy o 9 rano.")

# Uruchamianie zadania w poniedziałki i środy o 9 rano
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)

Jak widzisz, schedule obsługuje różne wyrażenia czasowe, w tym dni tygodnia i dokładny czas uruchamiania. To niezwykle wygodne dla planowania zadań zsynchronizowanych z twoją pracą lub zaplanowanymi wydarzeniami.

4. Obsługa zadań z różnymi warunkami czasowymi

Jeśli twój skrypt wykonuje kilka zadań, a każde z nich ma swój harmonogram, schedule łatwo sobie z tym poradzi. Na przykład jedno zadanie może być uruchamiane każdego ranka, a inne — w piątki.

Przykład: łączenie różnych zadań w jednym skrypcie

Python

import schedule
import time

def morning_task():
    print("Dzień dobry! Czas na poranne zadanie.")

def friday_task():
    print("Hurra, piątek! Czas na piątkowe zadanie.")

# Zadania poranne każdego ranka o 7:30
schedule.every().day.at("07:30").do(morning_task)

# Zadania piątkowe każdego piątku o 16:00
schedule.every().friday.at("16:00").do(friday_task)

while True:
    schedule.run_pending()
    time.sleep(1)

Praktyczne wskazówki i typowe błędy

Kiedy dochodzi do automatyzacji zadań za pomocą schedule, jest kilka aspektów, na które warto zwrócić uwagę.

Po pierwsze, pamiętaj, że schedule uruchamia zadania w głównym wątku. Oznacza to, że jeśli twoje zadanie jest długotrwałe lub może zablokować wykonywanie innych zadań, warto pomyśleć o używaniu wielowątkowości lub wywołań asynchronicznych dla zadań.

Po drugie, jeśli twoje zadanie musi być wykonywane w ściśle określonym czasie i jest to krytyczne, upewnij się, że twój sprzęt jest włączony, a skrypt działa. schedule nie będzie działać, jeśli skrypt zostanie zatrzymany lub urządzenie wyłączone.

I na koniec, najbardziej powszechne nieporozumienie — oczekiwanie, że schedule może kompensować przegapione zadania. Niestety, jeśli twój skrypt nie działał, gdy zadanie powinno było zostać wykonane, schedule nie wykona go wstecz.

1
Опрос
Praca z datą i czasem,  39 уровень,  4 лекция
недоступен
Praca z datą i czasem
Praca z datą i czasem
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION