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 applikasjonens eksisterende Requests-økt, proxy-rutene, URL-en og den midlertidige utdatastien. For en offentlig HTTP-rute leverer HTTP-proxylisten kandidatadresser for proxy-tilordningen din. Strømmemønsteret forbruker kroppen trinnvis i stedet for å hente response.content og deretter skrive et andre objekt i full størrelse.

Behold den egenskapen gjennom hele nedlastingen: stream=True utsetter kroppen, men tilgang til response.content etterpå kan fortsatt samle det hele i minnet. iter_content-stykkestørrelsen er en lesepreferanse, ikke en forespørsel om HTTP-chunked overføringskoding på nettstedet eller proxyen.

Kontekstbehandleren for svaret lukker svaret selv om en skriving mislykkes eller applikasjonen stopper tidlig. Det illustrerte tidsavbruddsparet er ikke en reell frist for hele overføringen; sett retningslinjen for nedlastingens levetid separat etter behov.

Etter vellykket forbruk, kontroller artefakten applikasjonen forventer før du publiserer det endelige navnet. Ved avbrudd skal den delvise filen bare beholdes under en bevisst gjenopptakelsespolicy, med metadata som identifiserer den eksterne representasjonen. En ikke-tom midlertidig fil er ikke en vellykket nedlasting.

Relaterte artikler