Optimiser le Débit des API Didit avec Python Asyncio (FR)
Découvrez comment Asyncio de Python peut améliorer considérablement le débit et l'efficacité de vos applications consommant les API de vérification d'identité de Didit.

Optimisez la consommation des API : Python Asyncio permet des opérations d'E/S non bloquantes, améliorant significativement l'efficacité des applications effectuant de nombreux appels d'API vers des services comme Didit pour la vérification d'identité.
Maîtrisez la limitation de débit : Implémentez des stratégies sophistiquées de limitation de débit avec Asyncio pour respecter les limites d'API de Didit, prévenant les erreurs 429 et assurant une disponibilité continue du service pour les scénarios à haut débit.
Construisez des solutions évolutives : Tirez parti du modèle de concurrence d'Asyncio pour concevoir des systèmes robustes et évolutifs capables de traiter des milliers de requêtes de vérification d'identité par seconde sans engendrer des coûts d'infrastructure élevés.
L'avantage API-First de Didit : L'approche "developer-first" de Didit, avec des API claires et un bac à sable instantané, est idéalement adaptée à l'intégration avec des frameworks asynchrones, permettant des flux de vérification d'identité fluides et performants, de la vérification d'identité à la détection de vivacité.
Le besoin de vitesse : pourquoi Asyncio pour la consommation d'API ?
Dans le monde numérique rapide d'aujourd'hui, les applications doivent souvent effectuer de nombreux appels d'API externes pour remplir leurs fonctions. Lorsque ces appels sont bloquants, c'est-à-dire que l'application attend chaque réponse avant de passer à la suivante, des goulots d'étranglement de performance apparaissent rapidement. C'est particulièrement vrai pour les services de vérification d'identité, où un seul processus d'intégration utilisateur peut impliquer plusieurs interactions API : vérification d'identité, contrôles de vivacité passifs et actifs, correspondance faciale 1:1 et contrôle AML. Pour les entreprises avec des volumes d'utilisateurs élevés, ces opérations séquentielles peuvent entraîner des retards significatifs et une mauvaise expérience utilisateur.
La bibliothèque Python asyncio fournit un cadre robuste pour écrire du code concurrentiel en utilisant la syntaxe async/await. Contrairement au multi-threading traditionnel, qui peut introduire des complexités comme le Global Interpreter Lock (GIL) pour les tâches liées au CPU, asyncio est conçu pour les opérations liées aux E/S. Les appels d'API sont intrinsèquement liés aux E/S (attendre les réponses réseau), ce qui fait d'asyncio un candidat idéal pour surcharger la capacité de votre application à consommer efficacement les API externes. En permettant à votre programme d'effectuer d'autres tâches en attendant les réponses API, asyncio peut augmenter considérablement le débit sans nécessiter une réécriture complète de l'architecture de votre application en un système distribué.
Comprendre le paysage des API Didit et les limites de débit
Didit, en tant que plateforme d'identité native de l'IA, offre une suite complète d'API pour la vérification d'identité, y compris la vérification d'identité (OCR, MRZ, codes-barres), la vivacité passive et active, la correspondance faciale 1:1, le contrôle et la surveillance AML, et plus encore. Notre API est conçue pour des performances et une fiabilité élevées, mais comme toutes les API robustes, elle utilise la limitation de débit pour assurer la stabilité et une utilisation équitable pour tous les clients. Comprendre ces limites est crucial pour tout consommateur à haut débit.
Didit applique des limites de débit globales et spécifiques aux points de terminaison. Par exemple, les limites globales sont généralement de 300 requêtes par minute et par application pour les points de terminaison GET et Write/Delete. Des limites plus restrictives s'appliquent aux opérations à fort impact, telles que 600 RPM pour POST /v2/session/ (pour la création de flux de vérification) et 100 RPM pour GET /v2/session/<id>/decision/ (pour récupérer les décisions de session). Lorsque ces limites sont dépassées, l'API renvoie un code d'état 429 Too Many Requests, accompagné d'en-têtes utiles comme X-RateLimit-Limit, X-RateLimit-Remaining et Retry-After (secondes d'époque) pour guider votre stratégie de diminution de débit.
L'implémentation d'asyncio vous permet de gérer ces limites de débit beaucoup plus efficacement. Au lieu d'un seul thread bloquant atteignant la limite, une application asynchrone peut intelligemment mettre en file d'attente les requêtes, implémenter un "exponential backoff" et réessayer les appels échoués sans bloquer le flux de l'application entière. Cela se traduit par une consommation d'API plus fluide et moins d'interruptions, garantissant que vos processus de vérification d'identité restent ininterrompus même pendant les charges de pointe.
Implémentation d'Asyncio pour les appels API Didit concurrents
L'intégration d'asyncio avec les API de Didit implique l'utilisation d'un client HTTP asynchrone comme aiohttp. Voici un aperçu conceptuel de la façon dont vous pourriez structurer vos appels d'API asynchrones :
import asyncio
import aiohttp
import time
API_KEY = "YOUR_DIDIT_API_KEY"
BASE_URL = "https://verification.didit.me/v3/"
async def call_didit_api(session, endpoint, payload=None, method='POST'):
headers = {
'accept': 'application/json',
'x-api-key': API_KEY
}
if method == 'POST':
headers['content-type'] = 'application/json'
url = f"{BASE_URL}{endpoint}"
async with session.request(method, url, json=payload, headers=headers) as response:
if response.status == 429:
retry_after = int(response.headers.get('Retry-After', '5'))
print(f"Rate limit hit. Retrying after {retry_after} seconds...")
await asyncio.sleep(retry_after) # Implement simple backoff
return await call_didit_api(session, endpoint, payload, method) # Retry
response.raise_for_status()
return await response.json()
async def create_verification_session(session, workflow_id, user_id):
endpoint = "session/"
payload = {
"workflow_id": workflow_id,
"vendor_data": user_id,
"callback": "https://your-app.com/didit-callback"
}
return await call_didit_api(session, endpoint, payload, method='POST')
async def get_session_decision(session, session_id):
endpoint = f"session/{session_id}/decision/"
return await call_didit_api(session, endpoint, method='GET')
async def main():
async with aiohttp.ClientSession() as session:
tasks = []
# Example: Create 10 verification sessions concurrently
for i in range(10):
tasks.append(create_verification_session(session, "YOUR_WORKFLOW_ID", f"user_{i}"))
results = await asyncio.gather(*tasks)
for res in results:
print(f"Created session: {res.get('session_id')}")
# Example: Retrieve decisions for some sessions concurrently
decision_tasks = []
for res in results[:5]: # Take first 5 for decision retrieval
session_id = res.get('session_id')
if session_id:
decision_tasks.append(get_session_decision(session, session_id))
decision_results = await asyncio.gather(*decision_tasks)
for decision in decision_results:
print(f"Session decision: {decision}")
if __name__ == "__main__":
asyncio.run(main())
Cet exemple montre comment créer plusieurs sessions de vérification et récupérer leurs décisions simultanément. La fonction call_didit_api inclut un mécanisme de nouvelle tentative de base pour les erreurs 429 Too Many Requests, en utilisant l'en-tête Retry-After pour implémenter un "exponential backoff". Pour les systèmes de production, un "backoff" plus sophistiqué et un "circuit breaker pattern" seraient recommandés, mais cela illustre le principe de base.
En utilisant asyncio.gather, vous pouvez lancer plusieurs requêtes API simultanément, permettant à votre application de traiter d'autres tâches ou d'attendre les réponses de manière concurrente, ce qui entraîne des gains de performance significatifs par rapport aux appels bloquants séquentiels.
Stratégies pour la vérification d'identité à volume élevé
Atteindre un débit élevé avec les API Didit à l'aide d'Asyncio nécessite plus que simplement effectuer des requêtes de manière concurrente. Considérez ces stratégies :
- Traitement par lots intelligent : Bien que la vérification de base de Didit soit souvent initiée par l'utilisateur, pour des opérations comme la surveillance AML ou certaines recherches de données, vous pourriez concevoir des flux de travail permettant un traitement par lots lorsque cela est applicable, réduisant le nombre total d'appels API.
- Limitation de débit adaptative : Au-delà du simple "exponential backoff", implémentez un limiteur de débit adaptatif qui surveille
X-RateLimit-Remaininget ajuste dynamiquement le niveau de concurrence de vos tâchesasyncio. Si les appels restants sont faibles, ralentissez ; s'ils sont élevés, accélérez. - Mises à jour basées sur les webhooks : Pour les résultats de session (par exemple, après la vérification d'identité ou les contrôles de vivacité), fiez-vous aux webhooks de Didit plutôt qu'à un sondage excessif. Cela réduit le nombre de requêtes GET vers
/v2/session/<id>/decision/, qui a une limite de débit plus stricte de 100 RPM. L'architecture modulaire de Didit signifie que vous pouvez configurer des notifications webhook pour divers changements d'état, poussant des mises à jour en temps réel vers votre système sans interrogation constante. - Gestion des erreurs et observabilité : Implémentez une gestion robuste des erreurs pour les problèmes réseau, les erreurs API (au-delà des 429) et les délais d'attente. Enregistrez ou alertez lorsque des nouvelles tentatives sont déclenchées ou que les limites de débit sont constamment atteintes. Cela fournit des informations cruciales pour optimiser votre stratégie de consommation d'API.
- Gestion des ressources : Gérez vos instances
aiohttp.ClientSessionavec soin. Créer une nouvelle session pour chaque requête est inefficace en raison de la surcharge de connexion. Réutiliser une seule session pour plusieurs requêtes est généralement la meilleure pratique.
Comment Didit vous aide
Didit est conçu dès le départ pour les développeurs et les applications hautes performances, ce qui en fait un partenaire idéal pour les implémentations Python Asyncio. Notre architecture modulaire vous permet d'intégrer et d'utiliser des vérifications d'identité comme la vérification d'identité, la vivacité passive et active, la correspondance faciale 1:1 et le contrôle AML selon vos besoins, chacune étant accessible via des API claires et bien documentées. Cette modularité signifie que vous pouvez orchestrer des flux de travail de vérification complexes adaptés à vos besoins spécifiques, puis optimiser leur consommation à l'aide de techniques asynchrones.
Nous croyons en l'accessibilité de la vérification d'identité, c'est pourquoi nous offrons le KYC Core Gratuit. Cela vous permet d'expérimenter et de développer vos intégrations asynchrones sans coûts initiaux. Notre approche native de l'IA garantit que nos services de vérification sont rapides et précis, complétant parfaitement les avantages de vitesse d'Asyncio. Sans frais d'installation et avec un modèle de paiement par vérification réussie, Didit offre une solution rentable et évolutive pour les entreprises cherchant à implémenter une vérification d'identité à haut débit. Notre environnement de bac à sable instantané et notre documentation API complète permettent aux développeurs d'intégrer et d'optimiser rapidement leur utilisation des services de Didit, que vous construisiez un nouveau système ou que vous amélioriez un système existant.
Prêt à commencer ?
Prêt à voir Didit en action ? Obtenez une démo gratuite dès aujourd'hui.
Commencez à vérifier les identités gratuitement avec le plan gratuit de Didit.