Python တွင် itertools.cycle ဖြင့် round-robin proxy ရွေးချယ်ခြင်း
ပုံသေရေကန်မှ ခန့်မှန်းနိုင်သော proxy ရွေးချယ်မှုအတွက် ထပ်ခါတလဲလဲပြုလုပ်သော ကိရိယာကို အသုံးပြုပြီး ရွေးချယ်မှုကို တောင်းဆိုချက် အကောင်အထည်ဖော်ခြင်းနှင့် ကျန်းမာရေးမှ သီးခြားထားပါ။
ပုံသေရေကန်အတွက် 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 proxy စာရင်းမှ HTTP အဆုံးမှတ်များဖြင့် အစားထိုးပါ။ ဆက်တိုက်ခေါ်ဆိုမှုများသည် A, B, C ထို့နောက် A ကို ပြန်ပေးသည်။ နောက်တောင်းဆိုချက်ကို ပြင်ဆင်သောအခါ ရွေးချယ်ထားသော တန်ဖိုးကို အသုံးပြုပါ။ တောင်းဆိုချက်တစ်ခုစီအတွက် ကိရိယာကို ပြန်လည်ဖန်တီးပါက အစီအစဉ်သည် ပြန်စမည်။ Requests အတွက် ရွေးချယ်ထားသော အဆုံးမှတ်ကို တောင်းဆိုချက်ထဲသို့ ပေးပို့ပါ။
စာရင်းကို နှစ်သက်ပါက ၎င်း၏ ပထမအချက်ကို အဆုံးသို့ ရွှေ့ပါ။ pool.append(pool.pop()) သည် နောက်ဆုံးအချက်ကို ဖယ်ထုတ်ပြီး ချက်ချင်း ပြန်ထည့်သည်။ ပထမအချက်သည် ဘယ်တော့မှ မပြောင်းလဲပါ။ တန်းစီလုပ်ဆောင်ချက်မှာ pool.append(pool.pop(0)) ဖြစ်သော်လည်း အရှေ့မှ ဖယ်ရှားခြင်းက ကျန်စာရင်းအစိတ်အပိုင်းများကို ရွှေ့စေသည်။
ကိရိယာတွင် တမင်သက်သက် နှိမ့်ချသော တာဝန်ရှိသည်။ ၎င်းသည် ရရှိနိုင်မှုကို မစစ်ဆေးပါ၊ မအောင်မြင်သော ထည့်သွင်းမှုများကို မဖယ်ရှားပါ နှင့် မတူညီသော အများပြည်သူ ထွက်ပေါက်ကို အာမမခံပါ။ အဆုံးမှတ်များစွာသည် ပြင်ပ လိပ်စာတစ်ခုကို မျှဝေနိုင်သည်။
ထပ်မံကြိုးစားမှု မူဝါဒနှင့် ရေကန် အပ်ဒိတ်များကို ဤသေးငယ်သော ရွေးချယ်ကိရိယာ အပြင်တွင် ထားပါ။ မျှဝေထားသော ကိရိယာသည် တစ်ပြိုင်နက်တည်း ကုဒ်တွင် တမင်ရည်ရွယ်ထားသော ပိုင်ဆိုင်မှုပုံစံ ကိုလည်း လိုအပ်ပြီး ရွေးချယ်ထားသော အဆုံးမှတ်သည် ၎င်းကို လက်ခံရရှိသော လုပ်ဆောင်ချက်နှင့် တွဲဖက်နေစေရန် ဖြစ်သည်။