Fiksētam kopumam round-robin izvēle var būt patīkami īsa:

from itertools import cycle

choices = cycle([
    "http://proxy-a.example:8080",
    "http://proxy-b.example:8080",
    "http://proxy-c.example:8080",
])

endpoint = next(choices)

Aizstājiet parauga URL ar HTTP galapunktiem no jūsu pakalpojuma vai no HTTP starpniekserveru saraksta. Secīgi izsaukumi atgriež A, B, C un pēc tam atkal A. Izmantojiet izvēlēto vērtību, konfigurējot nākamo pieprasījumu. Ja iteratoru veidosit no jauna katram pieprasījumam, secība sāksies no sākuma. Ar Requests nododiet izvēlēto galapunktu pieprasījumam.

Ja labāk patīk saraksts, pārvietojiet tā pirmo elementu uz beigām. pool.append(pool.pop()) izņem pēdējo elementu un nekavējoties ievieto to atpakaļ; pirmais elements nekad nemainās. Rindas operācija ir pool.append(pool.pop(0)), tomēr noņemšana no priekšas pabīda atlikušos saraksta elementus.

Iteratoram ir apzināti pieticīgs uzdevums. Tas nepārbauda pieejamību, neizņem neveiksmīgus ierakstus un negarantē citu publisku izeju. Vairāki galapunkti var dalīties ar vienu ārējo adresi.

Turiet atkārtotā mēģinājuma politiku un kopuma atjauninājumus ārpus šī mazā atlasītāja. Koplietotam iteratoram ir vajadzīgs arī apzināts īpašumtiesību modelis paralēlā kodā, lai izvēlētais galapunkts paliktu piesaistīts operācijai, kas to saņēma.

Saistītie raksti