مۇقىم ئامبار ئۈچۈن 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))، ئەمما ئالدىدىن ئېلىۋېتىش قالغان تىزىملىك ئېلېمېنتلىرىنى يۆتكەيدۇ.

ئىتېراتورنىڭ قەستەن كىچىك ۋەزىپىسى بار. ئۇ بارمۇ-يوقلۇقنى تەكشۈرمەيدۇ، مەغلۇپ خاتىرىلەرنى ئۆچۈرمەيدۇ ۋە باشقا ئاممىۋى چىقىشنى كاپالەتكە ئىگە قىلمايدۇ. بىر قانچە ئاخىرقى نۇقتا بىر سىرتقى ئادرېسنى ئورتاقلىشالايدۇ.

قايتا سىناش سىياسىتى ۋە ئامبار يېڭىلاشنى بۇ كىچىك تاللىغۇچتىن سىرت ساقلاڭ. ئورتاق ئىتېراتور يەنە بىر ۋاقىتلىق كودتا قەستەن ئىگىلىك مودېلى غا موھتاج، تاللانغان ئاخىرقى نۇقتا ئۇنى قوبۇل قىلغان مەشغۇلاتقا باغلىنىپ تۇرۇشى ئۈچۈن.

مۇناسىۋەتلىك ماقالىلەر