Round-robin val á proxy í Python með itertools.cycle
Notaðu endurtekinn iterator fyrir fyrirsjáanlegt val á proxy úr föstum hópi, en haltu valinu aðskildu frá framkvæmd beiðnar og heilsu.
Fyrir fastan hóp getur round-robin val verið ákaflega stutt:
from itertools import cycle
choices = cycle([
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
"http://proxy-c.example:8080",
])
endpoint = next(choices)
Skiptu dæmi-URL-unum út fyrir HTTP-endapunkta úr þjónustunni þinni eða úr HTTP-proxylistanum. Samfelldar kallanir skila A, B, C og svo A aftur. Notaðu valið gildi þegar þú stillir næstu beiðni. Ef iteratorinn er búinn til aftur fyrir hverja beiðni byrjar röðin upp á nýtt. Fyrir Requests, sendu valda endapunktinn inn í beiðnina.
Ef þú vilt frekar lista, færðu fyrsta atriðið hans aftast. pool.append(pool.pop()) fjarlægir síðasta atriðið og setur það strax aftur; fyrsta atriðið breytist aldrei. Biðröðaraðgerðin er pool.append(pool.pop(0)), þó að fjarlæging að framan færi hin atriði listans til.
Iteratorinn hefur viljandi hógvært hlutverk. Hann athugar ekki framboð, fjarlægir ekki misheppnaðar færslur og tryggir ekki aðra opinbera útgöngu. Nokkrir endapunktar geta deilt einu ytri heimilisfangi.
Haltu endurtekningarstefnunni og uppfærslum hópsins utan þessa litla vals. Sameiginlegur iterator þarf líka viljandi eignarhaldslíkan í samhliða kóða svo að valdi endapunkturinn haldist tengdur þeirri aðgerð sem fékk hann.