1) Llamadas HTTP con `requests` y timeout
Nunca llames una API sin timeout: podrías bloquear proceso indefinidamente.
`requests.get(url, timeout=5)` evita bloqueos eternos cuando el servicio externo se degrada.
`response.status_code` y `response.raise_for_status()` son controles básicos para detectar respuestas no exitosas.
No mezcles validación HTTP con lógica de negocio; encapsula cliente en funciones dedicadas.
import requests
def obtener_usuario(user_id: int) -> dict:
url = f'https://api.ejemplo.com/users/{user_id}'
response = requests.get(url, timeout=5)
response.raise_for_status()
return response.json()