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)

Käytä tätä mallia sovelluksen olemassa olevan Requests-istunnon, välityspalvelimen reittien, URL-osoitteen ja väliaikaisen tulostepolun kanssa. Julkiselle HTTP-reitille HTTP-välityspalvelinluettelo tarjoaa ehdokasosoitteita välityspalvelinkarttaasi varten. Suoratoistomalli kuluttaa rungon vähitellen sen sijaan, että hankkisi response.content ja kirjoittaisi sitten toisen täysikokoisen olion.

Säilytä tämä ominaisuus koko latauksen ajan: stream=True lykkää runkoa, mutta response.content-kohtaan myöhemmin pääseminen voi silti kerätä sen kokonaan muistiin. iter_content-osan koko on lukemisen asetus, ei pyyntö HTTP:n paloitellusta siirtokoodauksesta verkkosivustolla tai välityspalvelimessa.

Vastauksen kontekstinhallinta sulkee vastauksen, vaikka kirjoitus epäonnistuisi tai sovellus pysähtyisi aikaisin. Havainnollistava aikakatkaisupari ei ole koko siirron seinäkellon määräaika; aseta latauksen elinkaarikäytäntö erikseen tarpeen mukaan.

Onnistuneen kulutuksen jälkeen tarkista artefakti, jota sovellus odottaa, ennen lopullisen nimen julkaisemista. Keskeytyksen sattuessa säilytä osittainen tiedosto vain tietoisen jatkamiskäytännön mukaisesti, metatiedoilla, jotka tunnistavat etäesityksen. Ei-tyhjä väliaikaistiedosto ei ole onnistunut lataus.

Aiheeseen liittyvät artikkelit