Proxy B, encore proxy B, puis proxy A. Votre journal paraît suspect, mais un sélecteur aléatoire a parfaitement le droit de faire exactement cela.

Choisir dans la même liste à chaque requête autorise les répétitions. Avec deux points de terminaison également probables, la sélection indépendante suivante a une chance sur deux de correspondre à la précédente. Une courte série contenant des répétitions ne prouve pas que le sélecteur a ignoré la liste.

Choisissez le comportement dont vous avez réellement besoin

ExigenceRègle de sélection
Chaque tirage est indépendantChoisissez dans la liste éligible à chaque fois
Utilisez chaque point de terminaison une fois avant de recommencerMélangez une copie, consommez-la, puis commencez un autre passage
Évitez le point de terminaison immédiatement précédentExcluez ce point de terminaison avant de choisir

Pour la dernière politique, traitez explicitement le cas d'un seul point de terminaison :

candidates = [endpoint for endpoint in eligible if endpoint != previous]
if not candidates:
    raise RuntimeError("No different eligible proxy is available")
selected = random.choice(candidates)

Ce fragment suppose que random est importé et que la liste des points de terminaison est déjà validée. Un pool public peut commencer par la liste gratuite de proxys lorsque ses protocoles conviennent au client final ; cette règle de sélection contrôle toujours les répétitions. Attendre, réutiliser l'unique point de terminaison ou s'arrêter relève d'une politique d'application. Une boucle infinie attendant une valeur aléatoire différente ne peut pas résoudre une liste ne contenant qu'un seul choix distinct.

Dans un répartiteur concurrent, sélectionner et enregistrer le point de terminaison précédent exige aussi une propriété coordonnée. Sinon, deux workers peuvent tous deux exclure l'ancienne valeur et choisir la même valeur suivante.

Enfin, cette règle concerne l'identité du point de terminaison. Deux points de terminaison différents peuvent mener à une même sortie publique, et un point de terminaison de fournisseur peut mener à plusieurs sorties. Enregistrez-les séparément avant de conclure que la rotation est cassée.

Articles similaires