Proxy B, di nuovo proxy B, poi proxy A. Il registro sembra sospetto, ma un selettore casuale può fare esattamente questo.

Scegliere dalla stessa lista a ogni richiesta consente ripetizioni. Con due endpoint ugualmente probabili, la successiva selezione indipendente ha una probabilità su due di coincidere con quella precedente. Una breve sequenza con ripetizioni non è prova che il selettore abbia ignorato la lista.

Scegliete il comportamento che vi serve davvero

RequisitoRegola di selezione
Ogni scelta è indipendenteScegliete dalla lista idonea ogni volta
Usate ogni endpoint una volta prima di ricominciareMescolate una copia, consumatela, poi iniziate un'altra passata
Evitate l'endpoint immediatamente precedenteEscludete quell'endpoint prima di scegliere

Per l'ultima politica, gestite esplicitamente il caso di un solo endpoint:

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

Questo frammento presuppone che random sia importato e che la lista degli endpoint sia già convalidata. Un pool pubblico può iniziare con la lista gratuita di proxy quando i suoi protocolli si adattano al client finale; questa regola di selezione controlla comunque le ripetizioni. Se attendere, riutilizzare l'unico endpoint o fermarsi è una politica dell'applicazione. Un ciclo infinito in attesa di un valore casuale diverso non può risolvere una lista che contiene un solo scelta distinta.

In un dispatcher concorrente, selezionare e registrare l'endpoint precedente richiede anche una proprietà coordinata. Altrimenti due lavoratori possono entrambi escludere il vecchio valore e scegliere lo stesso valore successivo.

Infine, questa regola riguarda l'identità dell'endpoint. Due endpoint diversi possono portare a una sola uscita pubblica, e un endpoint di un provider può portare a più uscite. Registrateli separatamente prima di decidere che la rotazione è guasta.

Articoli correlati