Triats aleatoris, passades barrejades i punts finals de proxy repetits
Trieu entre triats aleatoris independents, una passada barrejada i una política sense repetició immediata, en lloc de tractar un punt final repetit com un rotador espatllat.
Proxy B, altre cop proxy B, i després proxy A. El vostre registre sembla sospitós, però un selector aleatori pot fer exactament això.
Triar de la mateixa llista a cada petició permet repeticions. Amb dos punts finals igualment probables, la selecció independent següent té una probabilitat d'una entre dues de coincidir amb l'anterior. Una sèrie curta amb repeticions no demostra que el selector hagi ignorat la llista.
Trieu el comportament que realment necessiteu
| Requisit | Regla de selecció |
|---|---|
| Cada tria és independent | Trieu de la llista elegible cada vegada |
| Useu cada punt final una vegada abans de començar de nou | Barregeu una còpia, consumiu-la i després comenceu una altra passada |
| Eviteu el punt final immediatament anterior | Excloeu aquest punt final abans de triar |
Per a l'última política, gestioneu explícitament el cas d'un sol punt final:
candidates = [endpoint for endpoint in eligible if endpoint != previous]
if not candidates:
raise RuntimeError("No different eligible proxy is available")
selected = random.choice(candidates)
Aquest fragment assumeix que random està importat i que la llista de punts finals ja s'ha validat. Un conjunt públic pot començar amb la llista gratuïta de proxys quan els seus protocols encaixen amb el client final; aquesta regla de selecció encara controla les repeticions. Si cal esperar, reutilitzar l'únic punt final o aturar-se és una política de l'aplicació. Un bucle sense fi que espera un valor aleatori diferent no pot resoldre una llista que només conté una opció distinta.
En un despatxador concurrent, seleccionar i registrar el punt final anterior també requereix una propietat coordinada. Si no, dos treballadors poden excloure el valor antic i triar el mateix valor següent.
Finalment, aquesta regla tracta de la identitat del punt final. Dos punts finals diferents poden portar a una sola sortida pública, i un punt final de proveïdor pot portar a diverses sortides. Registreu-ho per separat abans de decidir que la rotació està espatllada.