Pentru un grup fix, selecția round-robin poate fi plăcut de scurtă:

from itertools import cycle

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

endpoint = next(choices)

Înlocuiește URL-urile exemplu cu puncte finale HTTP din serviciul tău sau din lista de proxy HTTP. Apelurile succesive returnează A, B, C și apoi din nou A. Folosește valoarea selectată când configurezi cererea următoare. Recrearea iteratorului pentru fiecare cerere ar reporni secvența. La Requests, trimite punctul final selectat în cerere.

Dacă preferi o listă, mută primul ei element la final. pool.append(pool.pop()) elimină ultimul element și îl pune imediat la loc; primul element nu se schimbă niciodată. Operația de coadă este pool.append(pool.pop(0)), deși eliminarea din față deplasează elementele rămase ale listei.

Iteratorul are o sarcină deliberat de modestă. Nu verifică disponibilitatea, nu elimină intrările eșuate și nu garantează o altă ieșire publică. Mai multe puncte finale pot împărți o singură adresă externă.

Ține politica de reîncercare și actualizările grupului în afara acestui mic selector. Un iterator partajat are nevoie și de un model de proprietate intenționat în cod concurent, astfel încât punctul final ales să rămână legat de operația care l-a primit.

Articole similare