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

RequisitRegla de selecció
Cada tria és independentTrieu de la llista elegible cada vegada
Useu cada punt final una vegada abans de començar de nouBarregeu una còpia, consumiu-la i després comenceu una altra passada
Eviteu el punt final immediatament anteriorExcloeu 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.

Articles relacionats