CodeGym /Cours /Python SELF FR /Utilisation de la bibliothèque schedule pour exécuter des...

Utilisation de la bibliothèque schedule pour exécuter des tâches selon un planning

Python SELF FR
Niveau 39 , Leçon 4
Disponible

1. Introduction à la bibliothèque schedule

Dans cette conférence, on va apprendre à exécuter des tâches selon un planning, comme de véritables mécanismes d'horlogerie, pour que notre code fonctionne quand on le souhaite. Prépare-toi, aujourd'hui on va dompter le temps !

La bibliothèque schedule est un module léger pour lancer des fonctions à des intervalles prédéfinis. Si ton code doit s'exécuter selon un planning défini, comme collecter des données tous les jours à 6 heures du matin ou envoyer des rappels quotidiens, alors schedule est ce qu'il te faut.

Voici les principaux avantages de schedule :

  • Simplicité : une interface intuitive qui est beaucoup plus facile à utiliser que les solutions standards comme cron ou threading.
  • Minimalisme : pas de fonctionnalités inutiles — uniquement celles qui sont nécessaires.
  • Clarté : l'utilisation d'un langage presque naturel pour définir le planning.

Installation de la bibliothèque

Pour commencer, il faut installer la bibliothèque schedule. Comme pour la plupart des bibliothèques Python, on utilise pip :

Bash
pip install schedule

Maintenant que tout est prêt, plongeons dans le monde de l'automatisation et voyons comment schedule peut améliorer ton quotidien.

Les méthodes principales de la bibliothèque schedule

La bibliothèque schedule propose des méthodes pour planifier des tâches à des moments différents ou avec des fréquences variées :

  • every().day.at("HH:MM") — exécute une tâche tous les jours à une heure précise.
  • every().hour — exécute une tâche toutes les heures.
  • every().minute — exécute une tâche toutes les minutes.
  • every().week.at("HH:MM") — exécute une tâche chaque semaine à une heure précise.
  • every().monday.at("HH:MM") — exécute une tâche chaque lundi à une heure précise.
  • every(10).seconds — exécute une tâche toutes les 10 secondes (ou toute autre durée définie).

2. Configurer des tâches récurrentes

On commence par quelque chose de simple — planifier une fonction qui s'exécute toutes les heures. On va créer une fonction simple qui affiche un message de bienvenue et la planifier.

Exemple : un message toutes les heures

Python

import schedule
import time

def say_hello():
    print("Salut ! Nous travaillons dans l'automatisation horaire.")

# Lance la fonction say_hello toutes les heures
schedule.every().hour.do(say_hello)

while True:
    # Exécute toutes les tâches planifiées
    schedule.run_pending()
    time.sleep(1)

Et voilà — ton premier script avec schedule ! Dans cet exemple, on utilise la méthode every().hour.do(say_hello) pour dire "Salut !" toutes les heures. Amusant, non ?

La commande schedule.every().hour.do(say_hello) n'exécute pas directement la fonction say_hello, mais ajoute son appel au planning. L'exécution réelle de la fonction se produira au moment prévu — elle sera appelée avec le code schedule.run_pending().

3. Configurer des intervalles plus complexes

Et si on voulait exécuter des tâches non seulement toutes les heures, mais aussi toutes les 10 minutes ou certains jours de la semaine ? schedule permet d'utiliser la plupart des expressions temporelles courantes, tout aussi facilement.

Exemple : exécuter une tâche toutes les 10 minutes

Python

import schedule
import time

def task():
    print("Cette tâche s'exécute toutes les 10 minutes.")

# Planifions l'exécution de la tâche toutes les 10 minutes
schedule.every(10).minutes.do(task)

while True:
    schedule.run_pending() # Lance toutes les tâches planifiées
    time.sleep(1)

Exemple : exécuter une tâche certains jours

Essayons maintenant de planifier une tâche qui s'exécute certains jours de la semaine, comme le lundi et le mercredi, mais uniquement à 9 heures.

Python

import schedule
import time

def monday_wednesday_task():
    print("Cette tâche s'exécute les lundis et mercredis à 9 heures.")

# Exécution de la tâche les lundis et mercredis à 9 heures
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)

Comme tu le vois, schedule gère différentes expressions temporelles, y compris les jours de la semaine et les heures précises. C'est super pratique pour planifier des tâches en fonction de ton travail ou d'événements prévus.

4. Gestion des tâches avec différentes conditions temporelles

Si ton script exécute plusieurs tâches, chacune avec son propre planning, schedule gère ça facilement. Par exemple, une tâche pourrait s'exécuter chaque matin, et une autre chaque vendredi.

Exemple : combiner plusieurs tâches dans un seul script

Python

import schedule
import time

def morning_task():
    print("Bonjour ! C'est l'heure de la tâche matinale.")

def friday_task():
    print("Youpi, c'est vendredi ! C'est l'heure de la tâche du vendredi.")

# Tâches matinales chaque matin à 7h30
schedule.every().day.at("07:30").do(morning_task)

# Tâches du vendredi chaque vendredi à 16h00
schedule.every().friday.at("16:00").do(friday_task)

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

Conseils pratiques et erreurs fréquentes

Quand il s'agit d'automatiser des tâches avec schedule, il y a quelques points importants à garder à l'esprit.

D'abord, souviens-toi que schedule exécute les tâches dans le thread principal. Cela signifie que si ta tâche prend du temps ou peut bloquer l'exécution d'autres tâches, il serait bon de penser à utiliser du multithreading ou des appels asynchrones pour ces tâches.

Ensuite, si ta tâche doit s'exécuter à une heure précise et que c'est critique, assure-toi que ton appareil est allumé et que le script est en cours d'exécution. schedule ne fonctionnera pas si le script est arrêté ou si l'appareil est éteint.

Enfin, une idée reçue courante est d'attendre que schedule rattrape les tâches manquées. Malheureusement, si ton script ne fonctionnait pas au moment où une tâche était censée s'exécuter, schedule ne l'exécutera pas rétroactivement.

1
Étude/Quiz
Travailler avec la date et l'heure, niveau 39, leçon 4
Indisponible
Travailler avec la date et l'heure
Travailler avec la date et l'heure
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION