Python లో itertools.cycle తో round-robin ప్రాక్సీ ఎంపిక
స్థిర పూల్ నుండి ఊహించగల ప్రాక్సీ ఎంపిక కోసం పునరావృత ఇటరేటర్ను ఉపయోగించండి, ఎంపికను అభ్యర్థన అమలు మరియు ఆరోగ్యం నుండి వేరుగా ఉంచండి.
స్థిర పూల్ కోసం 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)), అయితే ముందు నుండి తీసివేయడం మిగిలిన జాబితా అంశాలను కదిలిస్తుంది.
ఇటరేటర్కు ఉద్దేశపూర్వకంగా సాధారణ పని ఉంది. ఇది అందుబాటును తనిఖీ చేయదు, విఫలమైన నమోదులను తీసివేయదు లేదా భిన్నమైన పబ్లిక్ నిష్క్రమణకు హామీ ఇవ్వదు. పలు ఎండ్పాయింట్లు ఒకే బాహ్య చిరునామాను పంచుకోవచ్చు.
పునఃప్రయత్న విధానాన్ని మరియు పూల్ నవీకరణలను ఈ చిన్న ఎంపికదారు వెలుపల ఉంచండి. పంచుకున్న ఇటరేటర్కు సమకాలిక కోడ్లో ఉద్దేశపూర్వక యాజమాన్య నమూనా కూడా అవసరం, తద్వారా ఎంచుకున్న ఎండ్పాయింట్ దానిని స్వీకరించిన ఆపరేషన్కు జోడించి ఉంటుంది.