Round-robin proxyválasztás Pythonban az itertools.cycle segítségével
Használjon ismétlődő iterátort a kiszámítható proxyválasztáshoz egy fix készletből, a választást külön tartva a kérés végrehajtásától és az állapottól.
Fix készlet esetén a round-robin választás kellemesen rövid lehet:
from itertools import cycle
choices = cycle([
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
"http://proxy-c.example:8080",
])
endpoint = next(choices)
Cserélje le a minta URL-eket a szolgáltatásából vagy a HTTP proxylistából származó HTTP végpontokra. Az egymást követő hívások A, B, C, majd ismét A értéket adnak vissza. A kiválasztott értéket használja a következő kérés beállításakor. Ha minden kéréshez újra létrehozná az iterátort, a sorozat elölről kezdődne. Requests esetén adja át a kiválasztott végpontot a kérésnek.
Ha inkább listát szeretne, helyezze annak első elemét a végére. A pool.append(pool.pop()) eltávolítja az utolsó elemet, és azonnal vissza is teszi; az első elem soha nem változik. A sor művelete a pool.append(pool.pop(0)), bár az elöli eltávolítás eltolja a lista többi elemét.
Az iterátornak szándékosan szerény feladata van. Nem ellenőrzi az elérhetőséget, nem távolítja el a sikertelen bejegyzéseket, és nem garantál más nyilvános kimenetet. Több végpont is osztozhat egy külső címen.
Tartsa az újrapróbálkozási szabályzatot és a készlet frissítéseit ezen a kis választón kívül. A megosztott iterátornak szándékos tulajdonlási modellre van szüksége a párhuzamos kódban is, hogy a kiválasztott végpont ahhoz a művelethez kötve maradjon, amely kapta.