Kiinteälle joukolle round-robin-valinta voi olla mukavan lyhyt:

from itertools import cycle

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

endpoint = next(choices)

Korvaa esimerkki-URL-osoitteet palvelusi tai HTTP-välityspalvelinluettelon HTTP-päätepisteillä. Peräkkäiset kutsut palauttavat A, B, C ja sitten taas A. Käytä valittua arvoa seuraavan pyynnön määrittämisessä. Iteraattorin luominen uudelleen jokaista pyyntöä varten aloittaisi sarjan alusta. Requestsissa välitä valittu päätepiste pyynnölle.

Jos suosit luetteloa, siirrä sen ensimmäinen alkio loppuun. pool.append(pool.pop()) poistaa viimeisen alkion ja laittaa sen heti takaisin; ensimmäinen alkio ei koskaan muutu. Jonotoiminto on pool.append(pool.pop(0)), mutta edestä poistaminen siirtää luettelon jäljellä olevia alkioita.

Iteraattorilla on tarkoituksellisen vaatimaton tehtävä. Se ei tarkista saatavuutta, ei poista epäonnistuneita merkintöjä eikä takaa erilaista julkista ulostuloa. Useat päätepisteet voivat jakaa yhden ulkoisen osoitteen.

Pidä uudelleenyrityskäytäntö ja joukon päivitykset tämän pienen valitsimen ulkopuolella. Jaettu iteraattori tarvitsee myös tarkoituksellisen omistajuusmallin rinnakkaisessa koodissa, jotta valittu päätepiste pysyy siihen liittyneen toiminnon mukana.

Aiheeseen liittyvät artikkelit