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.

Artikli relatati