स्थिर पूलसाठी 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)) आहे, तथापि पुढून काढल्यास उर्वरित सूची घटक सरकतात.

इटरेटरचे काम जाणूनबुजून मर्यादित आहे. ते उपलब्धता तपासत नाही, अयशस्वी नोंदी काढत नाही किंवा वेगळा सार्वजनिक निर्गम देत नाही. अनेक एंडपॉइंट एकच बाह्य पत्ता सामायिक करू शकतात.

पुनःप्रयत्न धोरण आणि पूल अद्यतने या लहान निवडकर्त्याबाहेर ठेवा. सामायिक इटरेटरला समवर्ती कोडमध्ये जाणीवपूर्वक मालकी मॉडेलचीही गरज असते, जेणेकरून निवडलेला एंडपॉइंट तो मिळालेल्या क्रियेशी जोडलेला राहील.

संबंधित लेख