За фиксни скуп 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)), иако уклањање са почетка помера преостале елементе листе.

Итератор има намерно скроман задатак. Не проверава доступност, не уклања неуспеле уносе нити гарантује другачији јавни излаз. Неколико крајњих тачака може делити једну спољну адресу.

Држите политику поновног покушаја и ажурирања скупа изван овог малог селектора. Дељени итератор такође захтева намерни модел власништва у паралелном коду како би изабрана крајња тачка остала везана за операцију која ју је примила.

Повезани чланци