በPython urllib በፕሮክሲ የሚደረግን ማውረድ ወደ ፋይል በዥረት ማስተላለፍ
በፕሮክሲ በኩል የሚደረግን ማውረድ ወደ ጊዜያዊ ፋይል በዥረት ያስተላልፉ እና የመጨረሻውን የፋይል ስም ቅጂው ከተጠናቀቀ በኋላ ብቻ ይፋ ያድርጉ።
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 ሰከንድ ቅንብር ከጠቅላላ የማውረድ ጊዜ ይልቅ የሚደገፉ የሶኬት ስራዎችን ይገድባል። ለጠቅላላው ስራ የሚያስፈልግ የጊዜ ገደብ የተለየ የመተግበሪያ አያያዝ ይፈልጋል። የማስተላለፍ ማጠናቀቅም ከየወረደውን ፋይል ማረጋገጥ የተለየ ነው።