Last ned gjennom ein proxy med Requests og iter_content
Bruk eit Requests-svar trinnvis medan dei vanlege statuskontrollane, oppryddinga og ein medviten policy for delvis utdata vert haldne oppe.
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)
Bruk dette mønsteret med den eksisterande Requests-økta til applikasjonen, proxy-rutene, URL-en og den mellombelse utdatastien. For ei offentleg HTTP-rute leverer HTTP-proxylista kandidatadresser for proxy-tilordninga di. Straumemønsteret brukar kroppen trinnvis i staden for å hente response.content og deretter skrive eit andre objekt i full storleik.
Hald på den eigenskapen gjennom heile nedlastinga: stream=True utset kroppen, men tilgang til response.content etterpå kan framleis samle alt i minnet. iter_content-stykkestorleiken er ein lesepreferanse, ikkje ei førespurnad om HTTP-chunked overføringskoding på nettstaden eller proxyen.
Konteksthandsamaren for svaret lukkar svaret sjølv om ei skriving mislykkast eller applikasjonen stoppar tidleg. Det illustrerte tidsavbrotsparet er ikkje ein reell frist for heile overføringa; set retningslinja for levetida til nedlastinga separat etter behov.
Etter vellukka bruk, kontroller artefakten applikasjonen ventar før du publiserer det endelege namnet. Ved avbrot skal den delvise fila berre haldast under ein medviten gjenopptakingspolicy, med metadata som identifiserer den eksterne representasjonen. Ei ikkje-tom mellombels fil er ikkje ei vellukka nedlasting.