Automatisation en Python : Programmation et automatisation des tâches

Automatiser les tâches répétitives avec Python

Apprenez à automatiser les tâches répétitives en utilisant des bibliothèques Python telles que schedule et os. Ce tutoriel élargi présente les techniques de planification de base ainsi que des options avancées telles que l’intégration cron, la planification asynchrone, la gestion robuste des erreurs, la journalisation, la surveillance des tâches, l’intégration du système et les stratégies de déploiement.

Programmation
Auteur·rice
Affiliation
Date de publication

8 février 2024

Modifié

9 mai 2025

Mots clés

Automatisation Python, planification de tâches en Python, tutoriel sur la bibliothèque schedule, automatiser des tâches en Python, Automatisation de l’OS en Python, intégration de cron en Python

Introduction

L’automatisation des tâches répétitives permet de gagner un temps précieux et de réduire le risque d’erreur humaine. Dans ce tutoriel, vous apprendrez à exploiter les capacités de Python pour planifier et automatiser des tâches à l’aide de bibliothèques telles que schedule and os***************************************. Nous commencerons par des exemples de base, puis nous aborderons les options de planification avancées, la gestion robuste des erreurs, la surveillance des tâches, l’intégration avec d’autres systèmes et les stratégies de déploiement des scripts d’automatisation. Ce guide complet est conçu pour vous aider à rationaliser vos flux de travail et à construire des solutions d’automatisation évolutives.



Importation des paquets requis

Pour organiser notre code et éviter les répétitions, nous commençons par importer les paquets nécessaires. Cela permet de s’assurer que tous les blocs de code suivants ont accès aux bibliothèques nécessaires.

import schedule
import time
import os

Programmation de base avec la bibliothèque schedule

La bibliothèque schedule fournit un moyen simple et élégant de planifier des tâches en Python. Voici un exemple basique où nous exécutons une tâche simple toutes les minutes.

Exemple : Exécution d’une tâche toutes les minutes

def job():
    print("Running scheduled task...")

# Planifier l'exécution de la tâche toutes les minutes
schedule.every(1).minutes.do(job)

# Exécuter les tâches en attente dans une boucle
while True:
    schedule.run_pending()
    time.sleep(1)

Options de planification avancées

Intégration de Cron avec APScheduler

Pour des besoins d’ordonnancement plus complexes, vous pouvez intégrer une fonctionnalité de type cron en utilisant la bibliothèque APScheduler. APScheduler vous permet de planifier des tâches à l’aide d’expressions cron.

from apscheduler.schedulers.blocking import BlockingScheduler

def cron_job():
    print("Cron job executed.")

scheduler = BlockingScheduler()
# Planifier le travail à l'aide d'une expression cron : exécuter tous les jours à 6:30 AM
scheduler.add_job(cron_job, 'cron', hour=6, minute=30)

try:
    scheduler.start()
except (KeyboardInterrupt, SystemExit):
    pass

Planification asynchrone avec asyncio

Si vos tâches impliquent des opérations asynchrones, vous pouvez combiner asyncio avec la planification pour créer des scripts d’automatisation non bloquants et concurrents.

import asyncio

async def async_job():
    print("Running async scheduled task...")
    # Simulation d'opérations asynchrones
    await asyncio.sleep(0.5)  

async def scheduler_loop():
    while True:
        await async_job()
        # Attendre 60 secondes avant la prochaine exécution
        await asyncio.sleep(60)  

if __name__ == "__main__":
    asyncio.run(scheduler_loop())

Gestion robuste des erreurs et journalisation

Lors de l’automatisation de tâches, il est essentiel de disposer d’une gestion des erreurs et d’une journalisation robustes. En utilisant le module logging de Python, vous pouvez suivre l’exécution de vos tâches et résoudre les problèmes efficacement.

Exemple : Connexion aux tâches planifiées

import logging

# Configurer la journalisation
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")

def job_with_logging():
    try:
        # Simuler le traitement des tâches
        logging.info("Task started.")
        # Imaginez un traitement ici...
        logging.info("Task completed successfully.")
    except Exception as e:
        logging.error("An error occurred: %s", e)

schedule.every(1).minutes.do(job_with_logging)

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

Gestion et surveillance des tâches

Pour les scripts d’automatisation de longue durée, il est important de surveiller les tâches et de s’assurer qu’elles se déroulent comme prévu. Vous pouvez intégrer une surveillance simple en enregistrant les heures de démarrage et d’achèvement des tâches, ou utiliser des outils de surveillance externes (par exemple, Prometheus, Grafana) pour des scénarios plus complexes.

Exemple : Enregistrement de la durée d’une tâche

import time
import logging

logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")

def timed_job():
    start_time = time.time()
    logging.info("Task started.")
    # Simulation du traitement des tâches
    time.sleep(2)
    end_time = time.time()
    logging.info("Task completed in %.2f seconds.", end_time - start_time)

schedule.every(1).minutes.do(timed_job)

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

Intégration avec d’autres systèmes

L’automatisation implique souvent d’interagir avec d’autres systèmes, tels que les bases de données, les API ou les systèmes de fichiers. Le module os vous permet d’effectuer des opérations système telles que l’exécution de commandes shell ou la gestion de fichiers.

Exemple : Exécution d’une commande système

def run_system_command():
    # Liste des fichiers dans le répertoire courant
    output = os.popen("ls").read()
    print("Directory Listing:\n", output)

run_system_command()

Déploiement de scripts d’automatisation

Pour un environnement de production, envisagez de déployer vos scripts d’automatisation en tant que services d’arrière-plan. La conteneurisation avec Docker peut aider à assurer la cohérence entre les différents systèmes, et les outils d’orchestration comme Kubernetes peuvent gérer la mise à l’échelle et la disponibilité.

Exemple : Dockeriser votre script d’automatisation

  • Dockerfile:

    FROM python:3.9-slim
    WORKDIR /app
    COPY requirements.txt requirements.txt
    RUN pip install -r requirements.txt
    COPY . .
    CMD ["python", "your_script.py"]
  • requirements.txt:

    schedule
    apscheduler

Ce fichier Docker met en place un conteneur simple pour exécuter votre script d’automatisation. Personnalisez-le davantage en fonction de vos besoins.

Conclusion

L’extension de vos capacités d’automatisation en Python vous permet de gagner du temps, de réduire les erreurs manuelles et de créer des flux de travail évolutifs. En maîtrisant la planification de base avec schedule et en explorant les options avancées telles que l’intégration cron, la planification asynchrone, la gestion robuste des erreurs et l’intégration système, vous pouvez créer des scripts d’automatisation qui sont à la fois fiables et efficaces. Expérimentez ces techniques et adaptez-les à vos cas d’utilisation spécifiques pour rationaliser vos tâches quotidiennes.

Plus d’informations

Bon codage et bonne automatisation de vos tâches avec Python!

Explorer d’autres articles

Note

Voici d’autres articles de la même catégorie pour vous aider à approfondir le sujet.

placeholder

placeholder
Aucun article correspondant
Retour au sommet

Réutilisation

Citation

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Automatisation en Python : Programmation et automatisation
    des tâches},
  date = {2024-02-08},
  url = {https://www.datanovia.com/fr/learn/programming/python/tools/automation-scheduling-and-task-automation.html},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
Kassambara, Alboukadel. 2024. “Automatisation en Python : Programmation et automatisation des tâches.” February 8, 2024. https://www.datanovia.com/fr/learn/programming/python/tools/automation-scheduling-and-task-automation.html.