CodeGym /Cours Java /Python SELF FR /Sauvegarde et mise en cache des données

Sauvegarde et mise en cache des données

Python SELF FR
Niveau 34 , Leçon 4
Disponible

1. Pourquoi la mise en cache est-elle nécessaire ?

Alors, les amis, on arrive à l'une des parties les plus excitantes du web scraping — la mise en cache des données. Pourquoi mettre en cache ? Parce que c'est comme battre son propre "record de cinq minutes" dans le traitement des scripts ! Décortiquons pourquoi c'est nécessaire et comment ça marche, mais en toute simplicité, histoire de ne pas vous casser la tête.

Imaginez : vous faites un web scraping d'un site, vous obtenez toutes les données nécessaires et le lendemain, vous voulez les mettre à jour. Il faudrait vraiment revenir sur une boucle infinie de requêtes ? Non, on peut éviter ce travail redondant et sauvegarder les données grâce à la mise en cache.

Avantages de la mise en cache :

  • Vitesse: Les données mises en cache sont accessibles plus rapidement qu'en les rechargeant depuis le serveur. C'est comme avoir un accès rapide à ton dessert préféré : pas besoin de retourner à la boulangerie, il est déjà dans ton frigo !
  • Économie: Pas de surcharge inutile des serveurs avec des requêtes, et en plus, tu économises sur ton trafic internet. Bonus gratuit !
  • Résilience: La mise en cache aide à gérer les problèmes temporaires de connexion. Si le site devient soudainement inaccessible, tu as quand même les données. Presque comme avoir un parachute de secours.

2. Principes de base de la mise en cache des données

Qu'est-ce qu'un cache ?

Le cache, c'est du stockage temporaire qui permet de réutiliser des données déjà extraites. En programmation, la mise en cache aide à éviter de refaire des requêtes pour les mêmes données. Imaginez que le cache est votre bibliothèque personnelle d'informations fréquemment utilisées.

Types de caches :

  • Cache en mémoire: Rapide, mais il se vide quand l'alimentation s'éteint. Fonctionne comme la mémoire RAM.
  • Cache fichier: Les données sont sauvegardées sur le disque, plus durables et fiables.

3. Mise en cache pratique avec Python

Pour mettre en cache des données en Python, on peut utiliser la librairie requests. Cependant, requests ne propose pas la mise en cache intégrée. C'est là que requests-cache entre en jeu, offrant un moyen facile d'ajouter la mise en cache à vos requêtes.

Installation de la librairie

Bash

pip install requests-cache

Configurer la mise en cache

Configurons la mise en cache dans notre script :

Python

import requests_cache

# On configure un cache SQLite
requests_cache.install_cache('demo_cache', expire_after=180)

import requests

# On envoie une requête
response = requests.get('https://jsonplaceholder.typicode.com/todos/1')

# On vérifie d'où vient la réponse
print(f'From cache: {response.from_cache}')

# On affiche les données
print(response.json())

Tout d'abord, on configure le cache en utilisant requests_cache.install_cache. Cela va créer une base SQLite pour stocker les données mises en cache. Le paramètre expire_after spécifie le temps (en secondes), après lequel les données mises en cache seront supprimées. Ici, on configure le cache pour trois minutes.

Particularités de la mise en cache

Lorsque vous relancez ce code, notez la variable response.from_cache. Elle sera égale à True pour les appels suivants pendant les trois premières minutes.

Supprimer le cache

Supprimer le cache est simple : effacez le fichier de la base de données ou utilisez la méthode requests_cache.clear() pour vider toutes les entrées du cache.

4. Fonctionnalités avancées de cache

Mise en cache conditionnelle

Parfois, il peut être nécessaire d'avoir une mise en cache plus contrôlée. Par exemple, vous n'avez pas besoin de mettre en cache des données si elles sont déjà obsolètes ou si les paramètres de la requête changent.

Dans ces cas, vous pouvez utiliser requests-cache avec des paramètres supplémentaires:

Python

requests_cache.install_cache('custom_cache',
             allowable_methods=['GET', 'POST'],
             allowable_codes=[200, 404],
             ignored_parameters=['timestamp'])

Ici, on autorise la mise en cache pour les méthodes GET et POST et uniquement pour les réponses avec les codes 200 et 404. On ignore aussi le paramètre timestamp, de sorte que les requêtes avec des timestamps différents ne soient pas considérées comme différentes.

Utilisation de Redis

Si vous avez besoin d'une solution plus puissante, comme la prise en charge de la mise en cache distribuée, vous pouvez utiliser redis. C'est un système de mise en cache de données en mémoire, très populaire dans le domaine des Big Data.

Étapes de fonctionnement :

  1. Installez Redis et la librairie Python :
    Bash
    
    brew install redis  # pour les utilisateurs macOS
    pip install redis
    
  2. Configurez Redis dans votre projet :
    Python
    
    import redis
    import requests
    
    r = redis.Redis(host='localhost', port=6379, db=0)
    
    def get_cached_response(url):
        if r.get(url):
            return r.get(url).decode('utf-8')
        else:
            response = requests.get(url)
            r.setex(url, 3600, response.text)  # cache pour 1 heure
            return response.text
    
    print(get_cached_response('https://jsonplaceholder.typicode.com/todos/1'))
    

Cet exemple utilise Redis pour stocker des réponses pendant une heure. On vérifie si les données sont dans le cache, et uniquement en cas d'absence on fait une requête HTTP.

5. Gestion des erreurs

Lorsque vous travaillez avec la mise en cache, il peut arriver que la base soit corrompue ou que le cache ne se mette pas à jour. Dans ces cas, il est essentiel de consigner des logs et de vérifier régulièrement les données.

Exemple de code pour enregistrer des logs :

Python

import logging

logging.basicConfig(level=logging.INFO)

try:
    response = get_cached_response('https://jsonplaceholder.typicode.com/todos/1')
    logging.info("Données récupérées avec succès depuis le cache")
except Exception as e:
    logging.error("Erreur lors de la récupération des données : %s", str(e))

Dernières réflexions

La mise en cache n'est pas juste un outil pour accélérer le travail. C'est un moyen de rendre vos applications plus fiables et résistantes aux pannes réseau temporaires ou aux surcharges des serveurs. Utiliser des outils tels que requests-cache ou redis permet de gérer efficacement les requêtes et de conserver les données pour une utilisation future. Deviens un maître du cache et ne surcharge pas tes scripts avec des requêtes inutiles ! Et comme on dit dans le vieux proverbe du programmeur : "Mieux vaut une fois cacher, que cent fois redemander".

1
Опрос
Contournement des restrictions pour le parsing,  34 уровень,  4 лекция
недоступен
Contournement des restrictions pour le parsing
Contournement des restrictions pour le parsing
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION