Selección de proxy round-robin en Python con itertools.cycle
Usa un iterador repetitivo para una selección de proxy predecible de un conjunto fijo, manteniendo la selección separada de la ejecución de la petición y de la salud.
Para un conjunto fijo, la selección round-robin puede ser agradablemente breve:
from itertools import cycle
choices = cycle([
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
"http://proxy-c.example:8080",
])
endpoint = next(choices)
Sustituye las URL de ejemplo por puntos finales HTTP de tu servicio o de la lista de proxies HTTP. Las llamadas sucesivas devuelven A, B, C y luego A otra vez. Usa el valor seleccionado al configurar la petición siguiente. Volver a crear el iterador para cada petición reiniciaría la secuencia. Con Requests, pasa el punto final seleccionado a la petición.
Si prefieres una lista, mueve su primer elemento al final. pool.append(pool.pop()) elimina el último elemento y lo devuelve de inmediato; el primer elemento nunca cambia. La operación de cola es pool.append(pool.pop(0)), aunque eliminar del principio desplaza los elementos restantes de la lista.
El iterador tiene una tarea deliberadamente modesta. No comprueba la disponibilidad, no elimina entradas fallidas ni garantiza una salida pública distinta. Varios puntos finales pueden compartir una misma dirección externa.
Mantén la política de reintentos y las actualizaciones del conjunto fuera de este pequeño selector. Un iterador compartido también necesita un modelo de propiedad intencionado en código concurrente para que el punto final elegido siga ligado a la operación que lo recibió.