Python'до itertools.cycle менен round-robin прокси тандоо
Туруктуу пулдан болжолдонуучу прокси тандоо үчүн кайталануучу итераторду колдонуп, тандоону сурам аткаруудан жана ден соолуктан бөлүп кармаңыз.
Туруктуу пул үчүн 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)), бирок алдыңкы жагынан алуу калган тизме элементтерин жылдырат.
Итератордун атайын жөнөкөй милдети бар. Ал жеткиликтүүлүктү текшербейт, ийгиликсиз жазууларды жок кылбайт жана башка сырткы чыгууну кепилдебейт. Бир нече акыркы чекит бир сырткы даректи бөлүшү мүмкүн.
Кайталоо саясатын жана пул жаңыртууларын бул кичинекей тандоочудан тышкары кармаңыз. Бөлүшүлгөн итераторго да параллель коддо атайын ээлик модели керек, тандалган акыркы чекит аны кабыл алган операцияга байланыштуу болушу үчүн.