Ves al contingut principal
Didit recapta 7,5M $ per construir la infraestructura per a identitat i frau
Didit
Torna al blog
Blog · 6 de març del 2026

Optimització del Rendiment: Python Asíncron per a l'API i Webhooks de Didit (CA)

Descobreix com asyncio de Python pot revolucionar la teva integració amb l'API i els webhooks de Didit, permetent una verificació d'identitat d'alt rendiment i un processament eficient.

Per DiditActualitzat el
python-asyncio-didit-api-webhooks.png

Optimitza les Interaccions amb l'APIAprofita asyncio de Python per fer trucades no bloquejants a l'API de Didit, millorant dràsticament el rendiment per a la verificació d'identitat i reduint la latència per a operacions d'alt volum.

Processament Eficient de WebhooksImplementa controladors de webhook asíncrons per processar els esdeveniments entrants de Didit sense bloquejar, assegurant que la teva aplicació es mantingui responsiva i pugui escalar per gestionar nombroses notificacions concurrents.

Domina la Gestió de Límits de TaxaComprèn i gestiona eficaçment els límits de taxa de l'API de Didit utilitzant tècniques asíncrones i estratègies de retrocés intel·ligents, prevenint interrupcions del servei i garantint un intercanvi de dades fiable.

L'Avantatge Natiu d'IA de DiditLa plataforma de Didit està dissenyada per a un alt rendiment i facilitat per al desenvolupador, oferint registre programàtic i API robustes que complementen perfectament la programació asíncrona per a solucions d'identitat escalables impulsades per IA.

La Necessitat de Velocitat: Per què la Programació Asíncrona és Important per a la Identitat

En el món digital actual, de ritme ràpid, les aplicacions exigeixen respostes instantànies. Ja sigui que estiguis incorporant nous usuaris, processant transaccions o verificant identitats, els retards poden provocar la pèrdua de clients i ingressos. La verificació d'identitat, en particular, sovint implica múltiples trucades a l'API, per comprovar documents, realitzar detecció de vivacitat o examinar llistes negres. Les trucades síncrones a l'API, on el teu programa espera que cada sol·licitud es completi abans de passar a la següent, poden convertir-se ràpidament en un coll d'ampolla, especialment quan es tracta de grans volums.

Aquí és on la programació asíncrona, específicament asyncio de Python, brilla. En permetre que la teva aplicació iniciï múltiples tasques de manera concurrent sense bloquejar el fil d'execució principal, asyncio permet un rendiment i una capacitat de resposta significativament més alts. Per integrar-se amb plataformes d'identitat potents com Didit, que ofereixen API robustes per a la verificació d'identificació, vivacitat passiva i activa, coincidència facial 1:1 i control AML, aprofitar asyncio no és només una optimització, sinó una necessitat per construir sistemes escalables i d'alt rendiment.

Imagina un escenari on milers d'usuaris intenten registrar-se simultàniament. Cada registre requereix diverses comprovacions d'identitat. Amb trucades síncrones, el teu servidor processaria aquestes una per una, cosa que provocaria llargues cues i usuaris frustrats. Amb asyncio, la teva aplicació pot iniciar totes aquestes comprovacions gairebé simultàniament, esperant que els resultats tornin a mesura que estiguin llestos, millorant dràsticament l'experiència de l'usuari i la capacitat general del sistema.

Implementació de Trucades Asíncrones a l'API de Didit

La integració amb l'API de Didit de manera asíncrona implica l'ús d'un client HTTP que admeti asyncio, com ara httpx o aiohttp. Aquestes biblioteques et permeten enviar sol·licituds sense bloquejar, cosa que les fa ideals per a escenaris d'alt rendiment.

Considerem un cas d'ús comú: iniciar múltiples sessions de verificació d'identitat. L'API de Didit està dissenyada per a l'eficiència, i amb asyncio, pots maximitzar-la. Per exemple, la creació de sessions de verificació mitjançant POST /v3/session/ es pot fer de manera concurrent. Cada sessió pot implicar la verificació d'identificació de Didit (OCR, MRZ, codis de barres) o comprovacions de vivacitat passiva i activa.


import asyncio
import httpx

async def create_didit_session(api_key: str, user_id: str):
    url = "https://apx.didit.me/v3/sessions/"
    headers = {"x-api-key": api_key, "Content-Type": "application/json"}
    payload = {"external_id": user_id, "flow_id": "your_flow_id"}
    
    async with httpx.AsyncClient() as client:
        response = await client.post(url, headers=headers, json=payload)
        response.raise_for_status()  # Raise an exception for bad status codes
        return response.json()

async def main():
    didit_api_key = "YOUR_DIDIT_API_KEY"
    user_ids = [f"user_{i}" for i in range(100)] # Simulate 100 users

    tasks = [create_didit_session(didit_api_key, user_id) for user_id in user_ids]
    results = await asyncio.gather(*tasks, return_exceptions=True)

    for i, result in enumerate(results):
        if isinstance(result, Exception):
            print(f"Error creating session for user_{user_ids[i]}: {result}")
        else:
            print(f"Session created for user_{user_ids[i]}: {result['session_id']}")

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

Aquest exemple demostra com crear 100 sessions de verificació de manera concurrent. Cada trucada a create_didit_session és una corrutina esperable. asyncio.gather les executa totes en paral·lel, reduint significativament el temps total en comparació amb l'execució seqüencial.

Gestió Asíncrona de Webhooks de Didit per a Actualitzacions en Temps Real

Els webhooks són crucials per a les actualitzacions en temps real de Didit, informant el teu sistema sobre la finalització de la verificació d'identificació, el resultat d'un control AML o el resultat d'una comprovació de prova de domicili. Quan Didit envia una notificació de webhook, la teva aplicació ha de processar-la ràpidament sense bloquejar els webhooks entrants posteriors. Un controlador de webhook asíncron és essencial per a això.

Un framework web asíncron típic de Python com FastAPI o Aiohttp és perfecte per construir un receptor de webhook asíncron. Quan Didit envia un webhook (per exemple, una notificació de finalització de sessió), el teu controlador pot analitzar la càrrega útil, verificar la signatura utilitzant la secret_shared_key obtinguda de la configuració del webhook de Didit, i després posar en cua el processament de l'esdeveniment a una tasca en segon pla o a una cua de missatges sense retardar la resposta HTTP a Didit.


from fastapi import FastAPI, Request, HTTPException
import hmac
import hashlib
import asyncio

app = FastAPI()
WEBHOOK_SECRET = "whsec_a1b2c3d4e5f6g7h8i9j0..." # Get this from Didit webhook config

async def process_didit_event(event_data: dict):
    # Simulate asynchronous processing, e.g., updating database, notifying users
    print(f"Processing Didit event: {event_data['event_type']} for session {event_data['session_id']}")
    await asyncio.sleep(2) # Simulate I/O bound task
    print(f"Finished processing event for session {event_data['session_id']}")

@app.post("/didit-webhook")
async def didit_webhook(request: Request):
    signature = request.headers.get("X-Didit-Signature")
    if not signature:
        raise HTTPException(status_code=400, detail="Missing X-Didit-Signature header")

    body = await request.body()
    
    # Verify webhook signature (important for security)
    expected_signature = hmac.new(WEBHOOK_SECRET.encode('utf-8'), body, hashlib.sha256).hexdigest()
    if not hmac.compare_digest(signature, expected_signature):
        raise HTTPException(status_code=403, detail="Invalid webhook signature")

    event_data = await request.json()
    
    # Process event asynchronously in the background
    asyncio.create_task(process_didit_event(event_data))
    
    return {"status": "received", "message": "Event accepted for processing"}

Aquest exemple de FastAPI mostra com reconèixer ràpidament el webhook i després descarregar el processament real utilitzant asyncio.create_task. Això garanteix que el teu punt final de webhook es mantingui altament disponible i responsiu, fins i tot si el processament d'esdeveniments individuals triga un temps. La configuració del webhook de Didit et permet especificar una webhook_url i webhook_version, facilitant la configuració d'un lliurament d'esdeveniments segur i fiable.

Navegant els Límits de Taxa amb Estratègies Asíncrones

Els límits de taxa de l'API són una consideració crítica per a qualsevol integració d'alt rendiment. Didit, com qualsevol proveïdor d'API robust, aplica límit de taxa per mantenir l'estabilitat. Comprendre i gestionar amb gràcia aquests límits és fonamental per evitar errors de 429 Too Many Requests i garantir un funcionament continu.

Didit proporciona capçaleres clares de límit de taxa (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, Retry-After) a les seves respostes. Amb asyncio, pots implementar estratègies sofisticades de limitació de taxa, com ara retrocés exponencial amb jitter i algorismes de cub de fitxes, sense bloquejar tota la teva aplicació.


import asyncio
import httpx
import time

async def make_rate_limited_request(client: httpx.AsyncClient, url: str, headers: dict, payload: dict, retries: int = 5):
    for attempt in range(retries):
        response = await client.post(url, headers=headers, json=payload)
        if response.status_code == 429:
            retry_after = int(response.headers.get("Retry-After", 2 ** attempt)) # Exponential backoff
            print(f"Rate limit hit. Retrying in {retry_after} seconds...")
            await asyncio.sleep(retry_after)
        else:
            response.raise_for_status()
            return response.json()
    raise Exception("Max retries exceeded for rate-limited request.")

async def main_rate_limited():
    didit_api_key = "YOUR_DIDIT_API_KEY"
    url = "https://apx.didit.me/v3/sessions/"
    headers = {"x-api-key": didit_api_key, "Content-Type": "application/json"}
    
    async with httpx.AsyncClient() as client:
        tasks = []
        for i in range(150): # Simulate exceeding a 300 rpm limit with 150 tasks
            payload = {"external_id": f"user_{i}", "flow_id": "your_flow_id"}
            tasks.append(make_rate_limited_request(client, url, headers, payload))
        
        results = await asyncio.gather(*tasks, return_exceptions=True)
        for i, result in enumerate(results):
            if isinstance(result, Exception):
                print(f"Request {i} failed: {result}")
            else:
                print(f"Request {i} succeeded: {result.get('session_id')}")

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

Aquest exemple mostra una estratègia de retrocés exponencial asíncrona. Quan es rep un 429, la corrutina espera la durada especificada de Retry-After (o un temps que augmenta exponencialment) abans de tornar a intentar-ho, tot sense bloquejar altres tasques concurrents. Els límits globals de Didit (300 sol·licituds per minut per aplicació per a punts finals GET/Write/Delete) i els límits específics del punt final (per exemple, 600 rpm per a POST /v2/session/) estan clarament documentats, cosa que et permet dissenyar els teus clients asíncrons en conseqüència.

Com Didit Ajuda a Construir Solucions d'Identitat d'Alt Rendiment

L'arquitectura de Didit està inherentment dissenyada per suportar operacions d'alt rendiment, cosa que la converteix en un soci ideal per a integracions asíncrones. La nostra plataforma ofereix diversos avantatges clau:

  • Primer el Desenvolupador i Natiu d'IA: Didit proporciona API netes i documentació completa, cosa que facilita la integració amb asyncio de Python. El nostre enfocament natiu d'IA significa que les tasques complexes de verificació d'identitat, des de la verificació d'identificació fins a la vivacitat passiva i activa, es processen de manera eficient per la nostra part, permetent que la teva aplicació simplement esperi els resultats.
  • Primitives d'Identitat Modulars: El disseny modular de Didit et permet triar les comprovacions d'identitat exactes que necessites. Ja sigui la verificació d'identificació (OCR, MRZ), la coincidència facial 1:1 o la prova de domicili, cada primitiva és accessible mitjançant una API d'alt rendiment, perfectament adequada per a trucades concurrents.
  • Registre Programàtic: A diferència de moltes plataformes, Didit permet el registre programàtic, fins i tot per a agents d'IA. Pots obtenir credencials d'API en només dues trucades a l'API, completament sense capçalera, sense haver d'obrir mai un navegador. Això minimitza la fricció de configuració i permet el desplegament automatitzat i a gran escala de la teva infraestructura d'identitat.
  • Fluxos de Treball Orquestrats: El motor sense codi de Didit et permet orquestrar fluxos de treball KYC complexos, reduint el nombre de trucades a l'API individuals que la teva aplicació necessita gestionar, alhora que es beneficia del processament asíncron del resultat general de la sessió.
  • KYC Bàsic Gratuït i Preus Flexibles: Didit ofereix KYC Bàsic Gratuït, la qual cosa et permet començar sense costos inicials. El nostre model de pagament per comprovació reeixida i sense tarifes de configuració significa que només pagues pel que utilitzes, alineant-se perfectament amb arquitectures escalables basades en l'ús habilitades pel processament asíncron.

En combinar el poder de Python asyncio amb l'API robusta i amigable per al desenvolupador de Didit, pots construir sistemes de verificació d'identitat que no només siguin segurs i conformes, sinó també increïblement ràpids i escalables, capaços de satisfer les demandes de les empreses digitals modernes.

Preparat per Començar?

Preparat per veure Didit en acció? Demana una demostració gratuïta avui mateix.

Comença a verificar identitats de forma gratuïta amb el nivell gratuït de Didit.

Infraestructura per a identitat i frau.

Una API per a KYC, KYB, monitorització de transaccions i anàlisi de carteres. Integra-la en 5 minuts.

Demana a una IA que resumeixi aquesta pàgina
Python Asyncio per l'API i Webhooks Didit d'Alt Rendiment.