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 ວິນາທີຈຳກັດການດຳເນີນການຊອກເກັດທີ່ຮອງຮັບ ບໍ່ແມ່ນເວລາດາວໂຫຼດທັງໝົດ. ກຳນົດເວລາສຳລັບວຽກທັງໝົດຕ້ອງການການຈັດການແຍກຕ່າງຫາກໃນແອັບພລິເຄຊັນ. ການສຳເລັດການໂອນຍັງແຍກຈາກການກວດສອບໄຟລ໌ທີ່ດາວໂຫຼດ.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ