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 സെക്കൻഡ് ക്രമീകരണം മൊത്തം ഡൗൺലോഡ് സമയത്തെയല്ല, പിന്തുണയുള്ള സോക്കറ്റ് പ്രവർത്തനങ്ങളെ പരിമിതപ്പെടുത്തുന്നു. മുഴുവൻ ജോലിയുടെ സമയപരിധിക്ക് ആപ്ലിക്കേഷനിൽ വേറിട്ട കൈകാര്യം വേണം. കൈമാറ്റം പൂർത്തിയാകുന്നതും ഡൗൺലോഡ് ചെയ്ത ഫയൽ പരിശോധിക്കുന്നതിൽ നിന്ന് വേറിട്ടതാണ്.

അനുബന്ധ ലേഖനങ്ങൾ