ສະຕຣີມການດາວໂຫຼດຜ່ານພຣັອກຊີລົງໄຟລ໌ດ້ວຍ Python urllib
ສະຕຣີມການດາວໂຫຼດຜ່ານພຣັອກຊີລົງໄຟລ໌ຊົ່ວຄາວ ແລະ ເຜີຍແຜ່ຊື່ໄຟລ໌ສຸດທ້າຍຫຼັງຈາກການສຳເນົາເສັດສິ້ນແລ້ວເທົ່ານັ້ນ.
import os
import shutil
from urllib.request import ProxyHandler, build_opener
proxy = 'http://proxy.example.net:8080'
opener = build_opener(ProxyHandler({
'http': proxy,
'https': proxy,
}))
temporary = 'archive.zip.part'
destination = 'archive.zip'
with opener.open('https://downloads.example.net/archive.zip',
timeout=20) as response:
with open(temporary, 'wb') as output:
shutil.copyfileobj(response, output)
os.replace(temporary, destination)ປ່ຽນ URL ແລະ ຊື່ໄຟລ໌ສຳລັບແອັບພລິເຄຊັນ. ສຳລັບການດາວໂຫຼດໄຟລ໌ສາທາລະນະທີ່ໄດ້ຮັບອະນຸຍາດໂດຍບໍ່ມີການຢືນຢັນພຣັອກຊີ ລາຍຊື່ພຣັອກຊີ HTTP ສາມາດໃຫ້ຈຸດປາຍທາງທີ່ເປັນຕົວແທນສຳລັບ URL ພຣັອກຊີ. ຕົວເປີດ urllib ພິເສດນີ້ໃຊ້ພຣັອກຊີ HTTP ສຳລັບປາຍທາງ HTTPS ດ້ວຍການກວດສອບໃບຢັ້ງຢືນປົກກະຕິ. ມັນບໍ່ຕິດຕັ້ງຕົວເປີດສາກົນ; ການຢືນຢັນ ຖ້າຈຳເປັນ ຕ້ອງການການຕັ້ງຄ່າທີ່ຮອງຮັບຂອງມັນ.
copyfileobj ສຳເນົາເປັນຕອນໆ. ການອອກຈາກບໍລິບົດຂອງໄຟລ໌ຈະປິດມັນ ແລະ ໄລ່ການຂຽນທີ່ບັຟເຟີໄວ້ກ່ອນທີ່ os.replace ຈະຕິດຕັ້ງຊື່ສຸດທ້າຍ.
ຖ້າຄຳຮ້ອງຫຼືການສຳເນົາເກີດຂໍ້ຜິດພາດ ການປ່ຽນຊື່ຈະຖືກຂ້າມໄປ. ໄຟລ໌ບາງສ່ວນອາດຍັງເຫຼືອສຳລັບນະໂຍບາຍການລຶບລ້າງ ແລະ ຂະບວນການນີ້ປະໄຟລ໌ສຸດທ້າຍທີ່ມີຢູ່ແລ້ວໂດຍບໍ່ແຕະຕ້ອງໃນຄວາມລົ້ມເຫຼວນັ້ນ. ຖ້າສຳເລັດ ການແທນທີ່ສາມາດຂຽນທັບໄຟລ໌ສຸດທ້າຍນັ້ນໄດ້ ດັ່ງນັ້ນເລືອກນະໂຍບາຍຢ່າງຕັ້ງໃຈ.
ໃຊ້ຊື່ຊົ່ວຄາວທີ່ເປັນເອກະລັກສຳລັບວຽກທີ່ເຮັດພ້ອມກັນ. ວັດຖຸເປີດແຍກຕ່າງຫາກບໍ່ປ້ອງກັນວຽກທີ່ແບ່ງປັນເສັ້ນທາງ .part ດຽວກັນ.
ການຕັ້ງຄ່າ 20 ວິນາທີຈຳກັດການດຳເນີນການຊອກເກັດທີ່ຮອງຮັບ ບໍ່ແມ່ນເວລາດາວໂຫຼດທັງໝົດ. ກຳນົດເວລາສຳລັບວຽກທັງໝົດຕ້ອງການການຈັດການແຍກຕ່າງຫາກໃນແອັບພລິເຄຊັນ. ການສຳເລັດການໂອນຍັງແຍກຈາກການກວດສອບໄຟລ໌ທີ່ດາວໂຫຼດ.