Pro pevný fond může být výběr round-robin příjemně krátký:

from itertools import cycle

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

endpoint = next(choices)

Nahraďte ukázkové adresy URL koncovými body HTTP ze své služby nebo ze seznamu HTTP proxy. Postupná volání vrací A, B, C a pak znovu A. Vybranou hodnotu použijte při sestavování následujícího požadavku. Opětovné vytvoření iterátoru pro každý požadavek by sekvenci restartovalo. U Requests předejte vybraný koncový bod do požadavku.

Pokud dáváte přednost seznamu, přesuňte jeho první prvek na konec. pool.append(pool.pop()) odstraní poslední prvek a hned ho vrátí zpět; první prvek se nikdy nezmění. Operace fronty je pool.append(pool.pop(0)), ale odstranění z čela posouvá zbývající prvky seznamu.

Iterátor má záměrně skromný úkol. Nekontroluje dostupnost, neodstraňuje neúspěšné položky ani nezaručuje jinou veřejnou výstupní adresu. Několik koncových bodů může sdílet jednu vnější adresu.

Politiku opakování a aktualizace fondu držte mimo tento malý selektor. Sdílený iterátor také potřebuje záměrný model vlastnictví v souběžném kódu, aby vybraný koncový bod zůstal připojen k operaci, která ho obdržela.

Související články