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)