Detén un bucle de rotación de proxies que no termina
Da a un grupo de proxies en Python un presupuesto finito de intentos y distingue los fallos de conexión de las respuestas del destino.
Un grupo de proxies puede convertir una simple caída en un bucle ocupado. Elige una dirección, falla, elige otra, vuelve a fallar. Si todos los endpoints son inaccesibles porque tu propia red está caída, cambiar de dirección nunca arregla la causa.
Da a la operación un presupuesto antes de elegir el primer proxy de tu grupo o de la lista de proxies gratuitos: un número finito de intentos, esperas de conexión y lectura acotadas y una fecha límite para la tarea completa. Un timeout de Requests controla su comportamiento documentado de conexión o lectura; por sí solo no limita un bucle que sigue emitiendo nuevas peticiones.
Decide qué merece otro intento
- Una conexión de proxy rechazada puede justificar probar otro endpoint.
- Una respuesta del destino necesita su propia interpretación. Recibir un error HTTP demuestra que alguna ruta de petición se completó.
- Un fallo de autenticación del proxy pide revisar el endpoint y la cuenta en lugar de machacar las mismas credenciales por una lista creciente.
Conserva la excepción o el estado original con el registro del intento. Un mensaje final que solo diga «todos los proxies fallaron» oculta si los fallos tenían siquiera la misma causa.
Comprobar la salud de cada proxy antes de cada petición real añade otra petición y aun así no garantiza que la siguiente vaya a funcionar. Reutiliza la información de salud reciente cuando encaje con la tarea y deja que la operación real informe su propio resultado.
Un reintento puede repetir el trabajo
Para una lectura de solo lectura, pasar a otro proxy suele ser más sencillo que reenviar un envío. Si una conexión se corta tras enviar una compra o un formulario, el destino puede haberlo procesado ya. Sigue el mecanismo de idempotencia del servicio y las reglas de reintento de HTTP antes de repetir el trabajo.
Cuando se agote el presupuesto, devuelve un fallo útil. Un trabajo que se detiene con evidencias es más fácil de reparar que uno que sigue rotando en silencio hasta que alguien lo nota.