Multzo finko batentzat, round-robin hautaketa atsegin handikoa izan daiteke:

from itertools import cycle

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

endpoint = next(choices)

Ordeztu adibideko URLak zure zerbitzuko HTTP amaierako puntuekin edo HTTP proxy zerrendakoekin. Ondoz ondoko deiek A, B, C eta gero A berriro itzultzen dute. Erabili hautatutako balioa hurrengo eskaera konfiguratzean. Eskaera bakoitzerako iteratzailea berriz sortzeak sekuentzia berrabiaraziko luke. Requestsentzat, pasatu hautatutako amaierako puntua eskaerari.

Zerrenda nahiago baduzu, eraman lehen elementua amaierara. pool.append(pool.pop()) azken elementua kentzen du eta berehala itzultzen du; lehen elementua ez da inoiz aldatzen. Ilara-eragiketa pool.append(pool.pop(0)) da, baina aurretik kentzeak gainerako zerrenda-elementuak lekuz aldatzen ditu.

Iteratzaileak helburu apala du. Ez du erabilgarritasuna egiaztatzen, ez ditu erregistro hutsak kentzen eta ez du irteera publiko ezberdina bermatzen. Hainbat amaierako puntuk helbide berbera parteka dezakete.

Mantendu berriro saiatzeko politika eta multzoaren eguneraketak hautatzaile txiki honetatik kanpo. Partekatutako iteratzaile batek jabetza-eredu intentionala kode konkurrentean ere behar du, hautatutako amaierako puntua jaso zuen eragiketari lotuta egon dadin.

Erlazionatutako artikuluak