Ittrasmetti tniżżil permezz ta' proksi f'fajl b'Python urllib
Ittrasmetti tniżżil permezz ta' proksi f'fajl temporanju u ppubblika l-isem finali tal-fajl biss wara li titlesta l-kopja.
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)Ibdel l-URLs u l-ismijiet tal-fajls għall-applikazzjoni. Għal tniżżil permess ta' fajl pubbliku mingħajr awtentikazzjoni tal-proksi, il-lista tal-proksis HTTP tista' tipprovdi punti finali kandidati għall-URL tal-proksi. Dan il-ftuħ urllib iddedikat juża proksi HTTP għal destinazzjoni HTTPS b'verifika normali taċ-ċertifikat. Ma jinstallax ftuħ globali; l-awtentikazzjoni, jekk meħtieġa, teħtieġ is-setup appoġġat tiegħu.
copyfileobj jikkopja f'biċċiet. Il-ħruġ mill-kuntest tal-fajl jagħlqu u jbattal il-kitbiet buffered qabel os.replace jistabbilixxi l-isem finali.
Jekk it-talba jew il-kopja tqajjem żball, l-isem mill-ġdid jinħaqad. Fajl parzjali jista' jibqa' għall-politika tat-tindif, u dan il-fluss iħalli fajl finali eżistenti mhux mittiefes f'dak il-falliment. Jekk jirnexxi, is-sostituzzjoni tista' tikteb fuq dak il-fajl finali, għalhekk agħżel il-politika b'mod deliberat.
Uża ismijiet temporanji uniċi għal xogħlijiet konkorrenti. Oġġetti tal-ftuħ separati ma jipproteġux xogħlijiet li jaqsmu l-istess mogħdija .part.
Is-setting ta' 20 sekonda jillimita l-operazzjonijiet tas-socket appoġġati, mhux il-ħin totali tat-tniżżil. Skadenza għax-xogħol kollu teħtieġ immaniġġjar separat fl-applikazzjoni. It-tlestija tat-trasferiment hija wkoll separata mill-verifika tal-fajl imniżżel.