Saltar al contenido
danielsanjuan

Cuaderno · 14 de noviembre de 2026

Python: pedir datos a una API con reintentos

pythonapi

El patrón que uso en todos los bots para que un fallo puntual no lo tire.

import time, requests

def pedir(url, intentos=3, timeout=20):
    for n in range(intentos):
        try:
            r = requests.get(url, timeout=timeout)
            r.raise_for_status()
            return r.json()
        except Exception as e:
            print(f"intento {n+1} falló: {e}")
            time.sleep(2 ** n)        # espera 1, 2, 4 s…
    return None

Para una API con clave, va en una cabecera, nunca en la URL ni escrita en el código:

r = requests.get(url, headers={"Authorization": f"Bearer {os.environ['TOKEN']}"}, timeout=20)

← Todas las notas