Выбор прокси по кругу в Python с itertools.cycle
Используйте повторяющийся итератор для предсказуемого выбора прокси из фиксированного пула, отделяя выбор от выполнения запроса и от состояния.
Для фиксированного пула круговой выбор может быть приятно коротким:
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)), хотя удаление из начала сдвигает остальные элементы списка.
У итератора намеренно скромная задача. Он не проверяет доступность, не удаляет неудачные записи и не гарантирует другой публичный выход. Несколько эндпоинтов могут делить один внешний адрес.
Держите политику повторов и обновления пула вне этого маленького селектора. Общему итератору также нужна намеренная модель владения в параллельном коде, чтобы выбранный эндпоинт оставался привязан к операции, получившей его.