Requests နှင့် iter_content ဖြင့် proxy မှတစ်ဆင့် ဒေါင်းလုဒ်လုပ်ခြင်း
ပုံမှန် အခြေအနေစစ်ဆေးမှုများ၊ ရှင်းလင်းရေးနှင့် တစ်စိတ်တစ်ပိုင်း ထွက်ရှိမှုအတွက် ရည်ရွယ်ချက်ရှိသော မူဝါဒကို ထိန်းသိမ်းထားစဉ် Requests တုံ့ပြန်မှုကို အဆင့်ဆင့် အသုံးပြုပါ။
with session.get(url, stream=True, proxies=routes,
timeout=(5, 30)) as response:
response.raise_for_status()
with open(part_path, 'wb') as output:
for chunk in response.iter_content(chunk_size=64 * 1024):
if chunk:
output.write(chunk)
ဤပုံစံကို အပ်ပ်၏ လက်ရှိ Requests session၊ proxy လမ်းကြောင်းများ၊ URL နှင့် ယာယီထွက်ရှိလမ်းကြောင်းတို့နှင့် တွဲသုံးပါ။ အများသုံး HTTP လမ်းကြောင်းအတွက် HTTP proxy စာရင်းက သင့် proxy မြေပုံအတွက် ကိုယ်စားလှယ်လျှာထားများ ပေးသည်။ Streaming ပုံစံသည် response.content ကို ရယူပြီး ဒုတိယ အပြည့်အစုံ အရာဝတ္ထုကို ရေးမည့်အစား ကိုယ်ထည်ကို အဆင့်ဆင့် အသုံးပြုသည်။
ဒေါင်းလုဒ်တစ်လျှောက်လုံး ထိုဂုဏ်သတ္တိကို ထိန်းထားပါ- stream=True သည် ကိုယ်ထည်ကို နောက်ရွှေ့ထားသော်လည်း နောက်ပိုင်း response.content ကို ဝင်ရောက်ခြင်းက အားလုံးကို မှတ်ဉာဏ်ထဲ စုဆောင်းနိုင်သေးသည်။ iter_content ၏ အစိတ်အပိုင်းအရွယ်အစားသည် ဖတ်ရှုရေးဦးစားပေးဖြစ်ပြီး ဝဘ်ဆိုက် သို့မဟုတ် proxy တွင် HTTP အစိတ်အပိုင်းအလိုက် ပို့ဆောင်မှု ကုဒ်ပြောင်းလဲမှုအတွက် တောင်းဆိုချက် မဟုတ်ပါ။
တုံ့ပြန်မှု၏ context မန်နေဂျာသည် စာရေးခြင်း မအောင်မြင်လျှင် သို့မဟုတ် အပ်ပ် စောစောရပ်လျှင်ပင် တုံ့ပြန်မှုကို ပိတ်သည်။ ဥပမာ timeout အတွဲသည် ပို့ဆောင်မှုတစ်ခုလုံးအတွက် အချိန်အပိုင်းအခြား သတ်မှတ်ချက် မဟုတ်ပါ။ လိုအပ်သလို ဒေါင်းလုဒ်၏ သက်တမ်းမူဝါဒကို သီးခြား သတ်မှတ်ပါ။
အောင်မြင်စွာ အသုံးပြုပြီးနောက် နောက်ဆုံးအမည်ကို ထုတ်ပြန်မီ အပ်ပ် မျှော်လင့်သော ရလဒ်ကို စစ်ဆေးပါ။ အနှောင့်အယှက် ဖြစ်ပါက တစ်စိတ်တစ်ပိုင်းဖိုင်ကို ရည်ရွယ်ချက်ရှိသော ပြန်လည်စတင်မှု မူဝါဒအောက်တွင်သာ ထားရှိပြီး အဝေးမှ ကိုယ်စားပြုမှုကို ဖော်ထုတ်သည့် မက်တာဒေတာနှင့်တွဲထားပါ။ ဗလာမဟုတ်သော ယာယီဖိုင်သည် အောင်မြင်သော ဒေါင်းလုဒ် မဟုတ်ပါ။