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 سیکنڈ کی ترتیب کل ڈاؤن لوڈ وقت کے بجائے معاون ساکٹ کارروائیوں کو محدود کرتی ہے۔ پورے کام کی آخری تاریخ کے لیے ایپلیکیشن میں الگ ہینڈلنگ درکار ہے۔ منتقلی کا مکمل ہونا بھی ڈاؤن لوڈ شدہ فائل کی تصدیق سے الگ ہے۔

متعلقہ مضامین