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)

Zamenite primere URL-ova HTTP krajnjim tačkama iz svoje usluge ili sa liste HTTP proxyja. Uzastopni pozivi vraćaju A, B, C, pa opet A. Koristite odabranu vrednost pri podešavanju sledećeg zahteva. Ponovno stvaranje iteratora za svaki zahtev resetovalo bi niz. Za Requests, prosledite odabranu krajnju tačku u zahtev.

Ako preferirate listu, premestite njen prvi element na kraj. pool.append(pool.pop()) uklanja poslednji element i odmah ga vraća; prvi element se nikada ne menja. Operacija reda je pool.append(pool.pop(0)), ali uklanjanje s početka pomera preostale elemente liste.

Iterator ima namerno skroman zadatak. Ne proverava dostupnost, ne uklanja neuspele unose niti garantuje drugačiji javni izlaz. Nekoliko krajnjih tačaka može deliti jednu spoljnu adresu.

Držite politiku ponovnih pokušaja i ažuriranja skupa izvan ovog malog selektora. Deljeni iterator takođe zahteva namerni model vlasništva u paralelnom kodu kako bi odabrana krajnja tačka ostala vezana za operaciju koja ju je primila.

Povezani članci