Туруктуу пул үчүн 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)), бирок алдыңкы жагынан алуу калган тизме элементтерин жылдырат.

Итератордун атайын жөнөкөй милдети бар. Ал жеткиликтүүлүктү текшербейт, ийгиликсиз жазууларды жок кылбайт жана башка сырткы чыгууну кепилдебейт. Бир нече акыркы чекит бир сырткы даректи бөлүшү мүмкүн.

Кайталоо саясатын жана пул жаңыртууларын бул кичинекей тандоочудан тышкары кармаңыз. Бөлүшүлгөн итераторго да параллель коддо атайын ээлик модели керек, тандалган акыркы чекит аны кабыл алган операцияга байланыштуу болушу үчүн.

Тектеш макалалар