Výber proxy round-robin v Pythone pomocou itertools.cycle
Použite opakujúci sa iterátor na predvídateľný výber proxy z pevného fondu a držte výber oddelený od vykonania požiadavky a od stavu.
Pre pevný fond môže byť výber round-robin príjemne krátky:
from itertools import cycle
choices = cycle([
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
"http://proxy-c.example:8080",
])
endpoint = next(choices)
Nahraďte ukážkové URL adresy koncovými bodmi HTTP zo svojej služby alebo zo zoznamu HTTP proxy. Postupné volania vracajú A, B, C a potom znova A. Vybranú hodnotu použite pri zostavovaní ďalšej požiadavky. Opätovné vytvorenie iterátora pre každú požiadavku by sekvenciu reštartovalo. Pri Requests odovzdajte vybraný koncový bod do požiadavky.
Ak uprednostňujete zoznam, presuňte jeho prvý prvok na koniec. pool.append(pool.pop()) odstráni posledný prvok a hneď ho vráti späť; prvý prvok sa nikdy nemení. Operácia frontu je pool.append(pool.pop(0)), hoci odstránenie z čela posúva ostatné prvky zoznamu.
Iterátor má zámerne skromnú úlohu. Nekontroluje dostupnosť, neodstraňuje neúspešné záznamy ani nezaručuje iný verejný výstup. Niekoľko koncových bodov môže zdieľať jednu vonkajšiu adresu.
Politiku opakovaní a aktualizácie fondu držte mimo tohto malého selektora. Zdieľaný iterátor tiež potrebuje zámerný model vlastníctva v súbežnom kóde, aby vybraný koncový bod zostal pripojený k operácii, ktorá ho dostala.