ດາວໂຫຼດຜ່ານ proxy ດ້ວຍ Requests ແລະ iter_content
ບໍລິໂພກການຕອບສະໜອງ 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)
ໃຊ້ຮູບແບບນີ້ກັບ session Requests ທີ່ມີຢູ່ແລ້ວຂອງແອັບ, ເສັ້ນທາງ proxy, URL ແລະ ເສັ້ນທາງຜົນອອກຊົ່ວຄາວ. ສຳລັບເສັ້ນທາງ HTTP ສາທາລະນະ, ລາຍຊື່ proxy HTTP ໃຫ້ທີ່ຢູ່ຜູ້ສະໝັກສຳລັບການແຜນທີ່ proxy ຂອງທ່ານ. ຮູບແບບສະຕຣີມບໍລິໂພກໂຕຂອງເທື່ອລະໜ້ອຍ ແທນທີ່ຈະໄດ້ຮັບ response.content ແລ້ວຂຽນວັດຖຸທີສອງຂະໜາດເຕັມ.
ຮັກສາຄຸນສົມບັດນັ້ນຕະຫຼອດການດາວໂຫຼດ: stream=True ເລື່ອນໂຕອອກໄປ, ແຕ່ການເຂົ້າເຖິງ response.content ຫຼັງຈາກນັ້ນຍັງສາມາດເກັບທັງໝົດໃນຫນ່ວຍຄວາມຈຳ. ຂະໜາດຊິ້ງຂອງ iter_content ແມ່ນຄວາມມັກໃນການອ່ານ ບໍ່ແມ່ນການຮ້ອງຂໍການເຂົ້າລະຫັດການສົ່ງ HTTP ແບບແບ່ງຊິ້ງຢູ່ເວັບໄຊ ຫຼື proxy.
ຜູ້ຈັດການບໍລິບົດຂອງການຕອບສະໜອງປິດການຕອບສະໜອງ ເຖິງແມ່ນການຂຽນລົ້ມເຫຼວ ຫຼື ແອັບຢຸດກ່ອນເວລາ. ຄູ່ເວລາກຳນົດທີ່ເປັນຕົວຢ່າງບໍ່ແມ່ນເສັ້ນຕາຍເວລາຈິງສຳລັບການສົ່ງທັງໝົດ; ຕັ້ງນະໂຍບາຍອາຍຸການດາວໂຫຼດແຍກຕ່າງຫາກຕາມຄວາມຕ້ອງການ.
ຫຼັງຈາກບໍລິໂພກສຳເລັດແລ້ວ, ກວດສອບວັດຖຸທີ່ແອັບຄາດຫວັງ ກ່ອນທີ່ຈະເຜີຍແຜ່ຊື່ສຸດທ້າຍຂອງມັນ. ເມື່ອຖືກຂັດຂວາງ, ເກັບໄຟລ໌ບາງສ່ວນໄວ້ພາຍໃຕ້ນະໂຍບາຍການສືບຕໍ່ທີ່ຕັ້ງໃຈເທົ່ານັ້ນ, ພ້ອມກັບ metadata ທີ່ລະບຸຕົວແທນທາງໄກ. ໄຟລ໌ຊົ່ວຄາວທີ່ບໍ່ຫວ່າງເປົ່າບໍ່ແມ່ນການດາວໂຫຼດທີ່ສຳເລັດ.