Selección de proxy round-robin en Python con itertools.cycle
Usa un iterador repetitivo para unha selección de proxy previsible dun conxunto fixo, mantendo a selección separada da execución da petición e da saúde.
Para un conxunto fixo, a selección round-robin pode ser agradablemente curta:
from itertools import cycle
choices = cycle([
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
"http://proxy-c.example:8080",
])
endpoint = next(choices)
Substitúe as URL de exemplo por puntos finais HTTP do teu servizo ou da lista de proxies HTTP. As chamadas sucesivas devolven A, B, C e despois A outra vez. Usa o valor seleccionado ao configurar a seguinte petición. Volver crear o iterador para cada petición reiniciaría a secuencia. Con Requests, pasa o punto final seleccionado á petición.
Se prefires unha lista, move o seu primeiro elemento ao final. pool.append(pool.pop()) elimina o último elemento e devólveo de inmediato; o primeiro elemento nunca cambia. A operación de cola é pool.append(pool.pop(0)), aínda que eliminar desde diante despraza os elementos restantes da lista.
O iterador ten unha tarefa deliberadamente modesta. Non comproba a dispoñibilidade, non elimina entradas fallidas nin garante unha saída pública distinta. Varios puntos finais poden compartir un mesmo enderezo externo.
Mantén a política de reintentos e as actualizacións do conxunto fóra deste pequeno selector. Un iterador compartido tamén necesita un modelo de propiedade intencionado en código concorrente para que o punto final escollido siga ligado á operación que o recibiu.