Għażla tal-proxy round-robin f'Python b'itertools.cycle
Uża iterator li jirrepeti għal għażla tal-proxy li tista' tbassarha minn ġabra fissa, filwaqt li żżomm l-għażla separata mill-eżekuzzjoni tat-talba u mis-saħħa.
Għal ġabra fissa, l-għażla round-robin tista' tkun pjaċevoli qasira:
from itertools import cycle
choices = cycle([
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
"http://proxy-c.example:8080",
])
endpoint = next(choices)
Ibdel l-URLs tal-eżempju b'punti tat-tmiem HTTP mis-servizz tiegħek jew mil-lista tal-proxy HTTP. Sejħiet suċċessivi jirritornaw A, B, C u mbagħad A mill-ġdid. Uża l-valur magħżul meta tikkonfigura t-talba li jmiss. Jekk toħloq l-iterator mill-ġdid għal kull talba, is-sekwenza terġa' tibda. Ma' Requests, għaddi l-punt tat-tmiem magħżul fit-talba.
Jekk tippreferi lista, ċċaqlaq l-ewwel element tagħha għall-aħħar. pool.append(pool.pop()) ineħħi l-aħħar element u jerġa' jqiegħdu lura minnufih; l-ewwel element qatt ma jinbidel. L-operazzjoni tal-kju hija pool.append(pool.pop(0)), għalkemm it-tneħħija mill-quddiem iċċaqlaq il-bqija tal-elementi tal-lista.
L-iterator għandu kompitu modest b'mod intenzjonat. Ma jiċċekkjax id-disponibbiltà, ma jneħħix entrati li jfallu u ma jiggarantixxix ħruġ pubbliku differenti. Diversi punti tat-tmiem jistgħu jaqsmu indirizz wieħed ta' barra.
Żomm il-politika tal-provi mill-ġdid u l-aġġornamenti tal-ġabra barra minn dan is-selettur żgħir. Iterator kondiviż għandu bżonn ukoll mudell ta' sjieda intenzjonat fil-kodi konkorrenti sabiex il-punt tat-tmiem magħżul jibqa' marbut mal-operazzjoni li rċevieh.