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)), но премахването отпред измества останалите елементи на списъка.
Итераторът има умишлено скромна задача. Той не проверява наличността, не премахва неуспешни записи и не гарантира различен публичен изход. Няколко крайни точки могат да споделят един външен адрес.
Дръжте политиката за повторни опити и актуализациите на пула извън този малък селектор. Споделеният итератор също се нуждае от умишлен модел на собственост в паралелен код, така че избраната крайна точка да остане свързана с операцията, която я е получила.