Medir el tiempo de respuesta de una API es esencial para entender su rendimiento, detectar cuellos de botella y mejorar la experiencia de usuario. Una API lenta puede afectar tanto la percepción de tu aplicación como su escalabilidad, por eso es importante saber cuánto tarda realmente en responder.
requests y timeCon este método, medimos el tiempo entre el inicio y el fin de la solicitud, obteniendo así el tiempo total de respuesta.
import requests
import time
url = "https://api.devapihub.com/api/products"
start = time.time()
response = requests.get(url)
end = time.time()
print(f"Status: {response.status_code}")
print(f"Tiempo de respuesta: {(end - start):.3f} segundos") Este método manual usa time.time() para medir el inicio y fin de la petición. Es la forma más sencilla y directa para obtener el tiempo total en segundos.
response.elapsedEsta propiedad devuelve el tiempo total de respuesta en segundos, sin necesidad de calcularlo manualmente.
import requests
url = "https://api.devapihub.com/api/products"
response = requests.get(url)
print(f"Status: {response.status_code}")
print(f"Tiempo de respuesta: {response.elapsed.total_seconds():.3f} segundos") La librería requests ya incluye la propiedad elapsed, que devuelve el tiempo total de respuesta sin necesidad de calcularlo manualmente.
En este ejemplo, realizamos cinco solicitudes y calculamos el promedio del tiempo de respuesta.
import requests
import statistics
import time
url = "https://api.devapihub.com/api/products"
tiempos = []
for _ in range(5):
start = time.time()
requests.get(url)
tiempos.append(time.time() - start)
promedio = statistics.mean(tiempos)
print(f"Promedio de respuesta: {promedio:.3f} segundos") Ejecuta varias solicitudes al mismo endpoint y calcula un promedio, útil para tener una medida más precisa del rendimiento real de la API.
aiohttpPara este ejemplo, usamos aiohttp para realizar solicitudes asíncronas.
import aiohttp
import asyncio
import time
async def medir(url):
async with aiohttp.ClientSession() as session:
start = time.time()
async with session.get(url) as resp:
await resp.text()
print(f"{url} -> {(time.time() - start):.3f} s")
asyncio.run(medir("https://api.devapihub.com/api/products")) Permite medir tiempos de respuesta de manera concurrente. Ideal si necesitas probar varios endpoints al mismo tiempo sin esperar a que cada uno termine.
Saber medir el tiempo de respuesta de una API es clave para mantener un servicio rápido y confiable. Ya sea con métodos simples o asíncronos, Python ofrece herramientas poderosas para monitorear y optimizar tus endpoints.