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 پرانیستونکی د HTTPS هدف لپاره د نورمال سند تصدیق سره HTTP پروکسي کاروي. دا نړیوال پرانیستونکی نه نصبوي؛ تصدیق، که اړین وي، د هغې ملاتړ شوي ترتیباتو ته اړتیا لري.

copyfileobj په ټوټو کاپي کوي. د فایل له شرایطو وتل هغه بندوي او د os.replace د وروستي نوم د ټاکلو دمخه بفر شوي لیکنې خالي کوي.

که غوښتنه یا کاپي تېروتنه پورته کړي، نوم بدلول پرېښودل کیږي. د پاکولو پالیسي لپاره ممکن جزوي فایل پاتې شي، او دا بهیر په هغه ناکامۍ کې موجود وروستی فایل نه لمس کوي. د بریالیتوب په صورت کې بدلون کولی شي هغه وروستی فایل بیا ولیکي، نو پالیسي په قصدي توګه وټاکئ.

د همغږو کارونو لپاره ځانګړي لنډمهاله نومونه وکاروئ. جلا پرانیستونکي شیان هغه کارونه نه ساتي چې ورته .part لاره شریکوي.

د 20 ثانیو ترتیب د ټول ډاونلوډ وخت پرځای ملاتړ شوي ساکټ عملیات محدودوي. د ټول کار لپاره مهال حد په اپلیکیشن کې جلا سمبالښت ته اړتیا لري. د لیږد بشپړیدل هم د ډاونلوډ شوي فایل تصدیق څخه جلا دي.

اړوندې مقالې