¿Cómo implementar una espera (wait) para la API?
sobes.tech AI
Respuesta de la IA
Para las pruebas de API se utilizan expectativas explícitas basadas en condiciones. Los métodos más comunes:
-
Polling (sondeo): Solicitud periódica a la API hasta que se obtenga el resultado esperado o se agote el tiempo de espera.
import time import requests def wait_for_status(url, expected_status, timeout=30, interval=1): """ Espera un estado determinado de la API. Args: url: URL del endpoint de la API. expected_status: Código de estado HTTP esperado. timeout: Tiempo máximo de espera en segundos. interval: Intervalo entre intentos en segundos. Returns: requests.Response: Objeto de respuesta en caso de éxito, None en caso de timeout. """ start_time = time.time() while time.time() - start_time < timeout: try: response = requests.get(url) # O otro método HTTP if response.status_code == expected_status: return response except requests.exceptions.RequestException as e: print(f"Error en la solicitud: {e}") # Registro del error time.sleep(interval) return None # Retorna None en caso de timeout # Ejemplo de uso # api_url = "http://example.com/api/resource" # expected_status_code = 200 # response = wait_for_status(api_url, expected_status_code) # if response: # print("¡Se obtuvo el estado esperado!") # else: # print("Timeout esperando el estado.") -
Long polling (sondeo prolongado): El cliente envía una solicitud y el servidor mantiene la conexión abierta hasta que aparecen datos o se agota el tiempo en el servidor. Menos común en REST API estándar, más usado en arquitecturas basadas en eventos o WebSocket.
-
Webhooks (llamadas de retorno): La API llama a una URL configurada en el cliente cuando ocurre un evento específico. Requiere una endpoint accesible públicamente en el lado del cliente para recibir el webhook.
- Implementación:
- Registro de la URL del webhook a través de la API de otro servicio.
- Escribir código en el lado del cliente para recibir y procesar solicitudes HTTP POST del webhook.
- Esperar (generalmente de forma asíncrona) la recepción de datos a través del webhook.
- Implementación:
La elección del método depende de la arquitectura de la API y los requisitos de la prueba. El polling es el más común y sencillo de implementar para la mayoría de las API REST.