Za fiksni skup round-robin odabir može biti ugodno kratak:

from itertools import cycle

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

endpoint = next(choices)

Zamijenite primjere URL-ova HTTP krajnjim točkama iz svoje usluge ili s popisa HTTP proxyja. Uzastopni pozivi vraćaju A, B, C, pa opet A. Upotrijebite odabranu vrijednost pri postavljanju sljedećeg zahtjeva. Ponovno stvaranje iteratora za svaki zahtjev resetiralo bi niz. Za Requests, proslijedite odabranu krajnju točku u zahtjev.

Ako preferirate popis, premjestite njegov prvi element na kraj. pool.append(pool.pop()) uklanja posljednji element i odmah ga vraća; prvi se element nikad ne mijenja. Operacija reda je pool.append(pool.pop(0)), ali uklanjanje s početka pomiče preostale elemente popisa.

Iterator ima namjerno skroman zadatak. Ne provjerava dostupnost, ne uklanja neuspjele unose niti jamči drugačiji javni izlaz. Nekoliko krajnjih točaka može dijeliti jednu vanjsku adresu.

Držite politiku ponovnih pokušaja i ažuriranja skupa izvan ovog malog birača. Dijeljeni iterator također treba namjerni model vlasništva u paralelnom kodu kako bi odabrana krajnja točka ostala vezana uz operaciju koja ju je primila.

Povezani članci