CodeGym /Corso Java /Python SELF IT /Utilizzo della libreria schedule per avviare attività sec...

Utilizzo della libreria schedule per avviare attività secondo un programma

Python SELF IT
Livello 39 , Lezione 4
Disponibile

1. Introduzione alla libreria schedule

In questa lezione, come dei veri orologiai, impareremo a avviare task secondo un programma, così che il nostro codice funzioni quando lo desideriamo. Preparatevi, oggi domineremo il tempo!

La libreria schedule è un modulo leggero per avviare funzioni basandosi su un programma definito. Se il tuo codice deve essere eseguito a cadenze regolari, ad esempio raccogliere dati ogni giorno alle 6 del mattino o inviare promemoria giornalieri, allora schedule è proprio quello di cui hai bisogno.

Ecco i principali vantaggi di schedule:

  • Semplicità: un'interfaccia intuitiva molto più semplice da usare rispetto alle soluzioni standard come cron o threading.
  • Minimalismo: nessuna funzionalità inutile — solo quelle che servono.
  • Chiarezza: utilizzo di un linguaggio quasi naturale per definire i programmi.

Installazione della libreria

Per iniziare, è necessario installare la libreria schedule. Come per la maggior parte delle librerie Python, utilizziamo pip:

Bash
pip install schedule

Ora che tutto è pronto, immergiamoci nel mondo dell'automazione e vediamo come schedule può cambiare il tuo lavoro quotidiano.

Metodi principali della libreria schedule

La libreria schedule offre metodi per configurare attività in momenti diversi e con frequenze di esecuzione variabili:

  • every().day.at("HH:MM") — esecuzione del task ogni giorno a un'ora specifica.
  • every().hour — esecuzione del task ogni ora.
  • every().minute — esecuzione del task ogni minuto.
  • every().week.at("HH:MM") — esecuzione del task ogni settimana a un'ora specifica.
  • every().monday.at("HH:MM") — esecuzione del task ogni lunedì a un'ora specifica.
  • every(10).seconds — esecuzione del task ogni 10 secondi (o qualsiasi altro intervallo di tempo).

2. Configurazione di task ricorrenti

Cominciamo con qualcosa di semplice — pianifichiamo una funzione che verrà eseguita ogni ora. Creeremo una funzione semplice che stampa un messaggio di benvenuto e la eseguiremo secondo il programma.

Esempio: saluto orario

Python

import schedule
import time

def say_hello():
    print("Ciao! Stiamo lavorando nell'automazione oraria.")

# Avvia la funzione say_hello ogni ora
schedule.every().hour.do(say_hello)

while True:
    # Esegue tutti i task pianificati
    schedule.run_pending()
    time.sleep(1)

Ecco fatto — il tuo primo script con schedule! In questo esempio utilizziamo il metodo every().hour.do(say_hello), per dire "Ciao!" ogni ora. Interessante, vero?

Il comando schedule.every().hour.do(say_hello) non esegue la funzione say_hello, ma aggiunge la sua esecuzione al programma. Il vero richiamo della funzione avviene quando arriva il momento opportuno - verrà chiamata utilizzando il codice schedule.run_pending().

3. Configurazione di intervalli più complessi

E se volessimo avviare attività non solo ogni ora, ma anche, diciamo, ogni 10 minuti o in giorni specifici della settimana? schedule supporta la maggior parte delle espressioni temporali comuni e puoi usarle con altrettanta semplicità.

Esempio: esecuzione di un task ogni 10 minuti

Python

import schedule
import time

def task():
    print("Questo task viene eseguito ogni 10 minuti.")

# Pianifichiamo l'esecuzione del task ogni 10 minuti
schedule.every(10).minutes.do(task)

while True:
    schedule.run_pending() # Esegue tutti i task pianificati
    time.sleep(1)

Esempio: esecuzione di un task in giorni specifici

Ora proviamo a pianificare un task che verrà eseguito in giorni specifici della settimana, ad esempio il lunedì e il mercoledì, ma solo alle 9 del mattino.

Python

import schedule
import time

def monday_wednesday_task():
    print("Questo task viene eseguito il lunedì e il mercoledì alle 9 del mattino.")

# Esecuzione del task il lunedì e mercoledì alle 9 del mattino
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)

Come puoi vedere, schedule gestisce varie espressioni temporali, inclusi i giorni della settimana e l'orario esatto di avvio. È incredibilmente utile per pianificare task sincronizzati con il tuo lavoro o eventi programmati.

4. Gestione dei task con condizioni temporali diverse

Se il tuo script esegue diversi task, e ciascuno ha il proprio programma, schedule se la cava benissimo anche con questo. Ad esempio, un task può essere eseguito ogni mattina, e un altro il venerdì.

Esempio: combinazione di diversi task in uno script

Python

import schedule
import time

def morning_task():
    print("Buongiorno! È tempo di fare il nostro task mattutino.")

def friday_task():
    print("Evviva, è venerdì! È il momento del task del venerdì.")

# Task mattutino ogni mattina alle 7:30
schedule.every().day.at("07:30").do(morning_task)

# Task del venerdì ogni venerdì alle 16:00
schedule.every().friday.at("16:00").do(friday_task)

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

Consigli pratici ed errori comuni

Quando si tratta di automatizzare task con schedule, ci sono alcuni aspetti da tenere a mente.

Innanzitutto, ricorda che schedule esegue i task nel thread principale. Questo significa che se il tuo task è lungo o può bloccare l'esecuzione di altri task, dovresti pensare all'uso di multithreading o chiamate asincrone per i task.

Inoltre, se il tuo task deve essere eseguito a un orario ben preciso ed è cruciale, assicurati che il tuo dispositivo sia acceso e lo script in funzione. schedule non funzionerà se lo script è stato arrestato o il dispositivo è spento.

E infine, l'equivoco più comune — aspettarsi che schedule possa compensare i task saltati. Purtroppo, se il tuo script non era in funzione quando il task doveva essere eseguito, schedule non lo eseguirà retroattivamente.

1
Опрос
Lavorare con le date e l'ora,  39 уровень,  4 лекция
недоступен
Lavorare con le date e l'ora
Lavorare con le date e l'ora
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION