asyncio et la bibliothèque aiohttp, vous pouvez envoyer plusieurs requêtes simultanément, réduisant considérablement le temps d’attente et améliorant le temps de réponse pour les opérations en lot.
Prérequis
- Assurez-vous d’avoir la bibliothèque
aiohttpinstallée :pip install aiohttp - Une clé API stockée de manière sécurisée, de préférence dans une variable d’environnement
PARADIGM_API_KEY.
Programmation Asynchrone avec asyncio
asyncio est une bibliothèque Python qui fournit un framework pour écrire du code concurrent en utilisant la syntaxe async et await. Elle est particulièrement utile pour le code réseau structuré de haut niveau et les opérations liées aux E/S. Vous pouvez trouver plus d’informations sur Asyncio ici.
Configuration du Client HTTP Asynchrone
Pour utiliser les fonctionnalités asynchrones, utilisezaiohttp.ClientSession. Initialisez la session avec votre clé API et l’endpoint approprié.
Appels API Asynchrones
Voici comment implémenter des appels API asynchrones :Définir une Fonction Asynchrone pour Envoyer des Messages
Définir une Fonction Asynchrone pour Envoyer des Messages
Créez une fonction
async qui envoie un message à l’API et attend la réponse.Envoyer des Requêtes de Manière Concurrente
Envoyer des Requêtes de Manière Concurrente
Utilisez
asyncio.gather pour envoyer plusieurs requêtes simultanément. Cette fonction attend que tous les futures (opérations asynchrones) se terminent.Exécuter la Fonction Main Asynchrone
Exécuter la Fonction Main Asynchrone
Utilisez
asyncio.run() pour exécuter la fonction main, qui gère toutes les opérations asynchrones.Exemple complet
Voici le code d’exemple dans son ensemble:Exemple complet
Exemple complet
Comparaison avec l’Exécution Synchrone
Lors de la comparaison de l’exécution asynchrone avec l’exécution synchrone traditionnelle (séquentielle), les opérations asynchrones se terminent généralement en beaucoup moins de temps, avec un potentiel d’amélioration encore plus grand selon la longueur des différentes requêtes. Cela est particulièrement vrai pour les tâches liées aux E/S comme les requêtes API. Les gains d’efficacité de l’exécution asynchrone proviennent de sa nature non-bloquante, qui permet à d’autres tâches de continuer sans attendre que les opérations d’E/S se terminent. En incorporant des requêtes asynchrones dans votre application, vous pouvez atteindre une plus grande efficacité et évolutivité, particulièrement lors de la gestion d’un grand nombre d’appels API.Exemple Complet de la Comparaison
Pour comparer les appels API synchrones et asynchrones dans un scénario pratique, vous pouvez utiliser l’extrait suivant. Cet extrait créera un fichier Python,speed_test.py, implémentant des requêtes API synchrones et asynchrones, respectivement. Vous pouvez ensuite exécuter ce script pour observer la différence de temps d’exécution, démontrant l’efficacité de la programmation asynchrone pour les requêtes en lot.
speed_test.py
- Exécutez l’extrait de code ci-dessus dans une cellule de notebook Jupyter pour créer
speed_test.py. - Exécutez le script dans le notebook Jupyter ou un terminal en utilisant la commande
!python speed_test.py.
Gestion des Erreurs et Timeout
Il est important d’ajouter une gestion robuste des erreurs pour les appels API asynchrones :Conclusion
Exploiter les requêtes API asynchrones viaaiohttp peut considérablement améliorer les performances et l’évolutivité des applications. Comme démontré, l’exécution asynchrone peut être presque 5 fois plus rapide que les méthodes synchrones, offrant des gains d’efficacité significatifs. Cette approche est essentielle pour gérer des interactions API à haut volume, garantissant l’efficacité des applications.