Izbira proxyja round-robin v Pythonu z itertools.cycle
Uporabite ponavljajoči se iterator za predvidljivo izbiro proxyja iz fiksnega nabora, pri čemer izbiro ločite od izvajanja zahteve in od stanja.
Za fiksni nabor je lahko izbira round-robin prijetno kratka:
from itertools import cycle
choices = cycle([
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
"http://proxy-c.example:8080",
])
endpoint = next(choices)
Zamenjajte vzorčne URL-je s končnimi točkami HTTP iz svoje storitve ali s seznama proxyjev HTTP. Zaporedni klici vrnejo A, B, C in nato znova A. Izbrano vrednost uporabite pri nastavljanju naslednje zahteve. Če iterator ustvarite znova za vsako zahtevo, se zaporedje začne od začetka. Pri Requests posredujte izbrano končno točko zahtevi.
Če raje uporabljate seznam, premaknite njegov prvi element na konec. pool.append(pool.pop()) odstrani zadnji element in ga takoj vrne nazaj; prvi element se nikoli ne spremeni. Operacija čakalne vrste je pool.append(pool.pop(0)), čeprav odstranjevanje s spredaj premakne preostale elemente seznama.
Iterator ima namerno skromno nalogo. Ne preverja razpoložljivosti, ne odstranjuje neuspešnih vnosov in ne zagotavlja drugačnega javnega izhoda. Več končnih točk si lahko deli en zunanji naslov.
Politiko ponovnih poskusov in posodobitve nabora imejte zunaj tega majhnega izbirnika. Skupni iterator potrebuje tudi namerni model lastništva v sočasni kodi, da izbrana končna točka ostane vezana na operacijo, ki jo je prejela.