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 ಸೆಕೆಂಡುಗಳ ಸೆಟ್ಟಿಂಗ್ ಒಟ್ಟು ಡೌನ್‌ಲೋಡ್ ಸಮಯವಲ್ಲ, ಬೆಂಬಲಿತ ಸಾಕೆಟ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ. ಇಡೀ ಕೆಲಸದ ಗಡುವಿಗೆ ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ಪ್ರತ್ಯೇಕ ನಿರ್ವಹಣೆ ಬೇಕು. ವರ್ಗಾವಣೆ ಪೂರ್ಣಗೊಳ್ಳುವುದು ಕೂಡ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ಫೈಲ್ ಪರಿಶೀಲನೆಯಿಂದ ಪ್ರತ್ಯೇಕವಾಗಿದೆ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು