Tilfældige valg, blandede gennemløb og gentagne proxy-endepunkter
Vælg mellem uafhængige tilfældige valg, et blandet gennemløb og en politik uden øjeblikkelig gentagelse i stedet for at betragte et gentaget endepunkt som en ødelagt rotator.
Proxy B, proxy B igen, derefter proxy A. Din log ser mistænkelig ud, men en tilfældig vælger må gøre præcis det.
Valg fra samme liste ved hver anmodning tillader gentagelser. Med to lige sandsynlige endepunkter har det næste uafhængige valg en chance på en ud af to for at matche det foregående. En kort serie med gentagelser er ikke bevis for, at vælgeren ignorerede listen.
Vælg den adfærd, du faktisk har brug for
| Krav | Valgregel |
|---|---|
| Hvert valg er uafhængigt | Vælg fra den kvalificerede liste hver gang |
| Brug hvert endepunkt én gang, før du starter forfra | Bland en kopi, forbrug den, og begynd derefter et nyt gennemløb |
| Undgå det umiddelbart foregående endepunkt | Udeluk dette endepunkt før valget |
For den sidste politik skal du håndtere tilfældet med ét endepunkt eksplicit:
candidates = [endpoint for endpoint in eligible if endpoint != previous]
if not candidates:
raise RuntimeError("No different eligible proxy is available")
selected = random.choice(candidates)
Dette uddrag forudsætter, at random er importeret, og at listen over endepunkter allerede er valideret. En offentlig pulje kan begynde med den gratis proxy-liste, når dens protokoller passer til den endelige klient; denne valgregel styrer stadig gentagelser. Om man skal vente, genbruge det eneste endepunkt eller stoppe, er en anvendelsespolitik. En endeløs løkke, der venter på en anden tilfældig værdi, kan ikke løse en liste, der kun indeholder ét forskelligt valg.
I en samtidig dispatcher kræver valg og registrering af det foregående endepunkt også koordineret ejerskab. Ellers kan to arbejdere begge udelukke den gamle værdi og vælge den samme næste værdi.
Endelig handler denne regel om endepunktets identitet. To forskellige endepunkter kan føre til én offentlig udgang, og ét udbyderendepunkt kan føre til flere udgange. Registrer dem separat, før du beslutter, at rotationen er brudt.