Round-robin избор на прокси во Python со itertools.cycle
Користете повторлив итератор за предвидлив избор на прокси од фиксен базен, држејќи го изборот одделен од извршувањето на барањето и здравствената состојба.
За фиксен базен, round-robin изборот може да биде пријатно краток:
from itertools import cycle
choices = cycle([
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
"http://proxy-c.example:8080",
])
endpoint = next(choices)
Заменете ги примерните URL-а со HTTP крајни точки од вашата услуга или од списокот со HTTP прокси. Последователните повици враќаат A, B, C, а потоа повторно A. Користете ја избраната вредност при поставување на следното барање. Повторното создавање на итераторот за секое барање ќе ја рестартира низата. За Requests, проследете ја избраната крајна точка во барањето.
Ако преферирате список, преместете го неговиот прв елемент на крајот. pool.append(pool.pop()) го отстранува последниот елемент и веднаш го враќа; првиот елемент никогаш не се менува. Операцијата на редот е pool.append(pool.pop(0)), иако отстранувањето од предната страна ги поместува останатите елементи од списокот.
Итераторот има намерно скромна задача. Тој не проверува достапност, не отстранува неуспешни записи и не гарантира различен јавен излез. Неколку крајни точки можат да делат една надворешна адреса.
Држете ја политиката за повторување и ажурирањата на базенот надвор од овој мал избирач. Споделениот итератор исто така бара намерен модел на сопственост во паралелен код, така што избраната крајна точка останува поврзана со операцијата што ја примила.