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)) වේ, නමුත් ඉදිරියෙන් ඉවත් කිරීම ඉතිරි ලැයිස්තු අංග මාරු කරයි.
පුනරාවර්තකයට හිතාමතා සරල කාර්යයක් ඇත. එය ලබා ගැනීමේ හැකියාව පරීක්ෂා නොකරයි, අසාර්ථක ඇතුළත් කිරීම් ඉවත් නොකරයි සහ වෙනස් පොදු පිටවීමක් සහතික නොකරයි. අන්ත ලක්ෂ්ය කිහිපයක් එක් බාහිර ලිපිනයක් බෙදා ගත හැක.
නැවත උත්සාහ කිරීමේ ප්රතිපත්තිය සහ තටාක යාවත්කාලීන කිරීම් මෙම කුඩා තේරීම්කරුවෙන් පිටත තබන්න. බෙදාගත් පුනරාවර්තකයකට සමගාමී කේතයේ හිතාමතා හිමිකාරිත්ව ආකෘතියක් ද අවශ්ය වන අතර, එවිට තෝරාගත් අන්ත ලක්ෂ්යය එය ලබා ගත් ක්රියාවලියට සම්බන්ධව පවතී.