Requests және iter_content арқылы проксиден жүктеу
Requests жауабын біртіндеп тұтыныңыз, қалыпты күйді тексерулерді, тазалауды және ішінара шығысқа арналған әдейі саясатты сақтай отырып.
with session.get(url, stream=True, proxies=routes,
timeout=(5, 30)) as response:
response.raise_for_status()
with open(part_path, 'wb') as output:
for chunk in response.iter_content(chunk_size=64 * 1024):
if chunk:
output.write(chunk)
Бұл үлгіні қолданбаның бар Requests сессиясымен, прокси маршруттарымен, URL және уақытша шығыс жолымен пайдаланыңыз. Жалпыға ашық HTTP маршруты үшін HTTP прокси тізімі прокси картаңызға кандидат мекенжайларды береді. Ағын үлгісі денені біртіндеп тұтынады, response.content алып, содан кейін екінші толық өлшемді нысанды жазудың орнына.
Бұл қасиетті бүкіл жүктеу барысында сақтаңыз: stream=True денені кейінге қалдырады, бірақ кейін response.content-ке қатынау оны әлі де толығымен жадқа жинауы мүмкін. iter_content бөлігінің өлшемі — оқу қалауы, сайттағы немесе проксидегі HTTP бөлшектелген тасымалдау кодтауына сұраныс емес.
Жауап контекст менеджері жауапты жабады, тіпті жазу сәтсіз болса немесе қолданба ерте тоқтаса да. Мысал ретінде келтірілген таймаут жұбы бүкіл тасымал үшін нақты уақыт шектеуі емес; қажет болса жүктеудің өмірлік саясатын бөлек орнатыңыз.
Сәтті тұтынудан кейін қорытынды атауды жарияламас бұрын қолданба күтетін артефактіні тексеріңіз. Үзіліс кезінде ішінара файлды тек әдейі жаңарту саясаты бойынша сақтаңыз, қашықтағы көріністі анықтайтын метадеректермен. Бос емес уақытша файл — сәтті жүктеу емес.