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)

Tento vzor použijte s existující relací Requests aplikace, trasami proxy, URL a dočasnou výstupní cestou. Pro veřejnou trasu HTTP poskytuje seznam HTTP proxy kandidátní adresy pro vaše mapování proxy. Vzor streamování konzumuje tělo postupně místo získání response.content a následného zápisu druhého objektu plné velikosti.

Tuto vlastnost zachovejte po celou dobu stahování: stream=True odkládá tělo, ale přístup k response.content poté jej stále může shromáždit celý do paměti. Velikost části u iter_content je preference čtení, nikoli požadavek na HTTP přenosové kódování po částech na webu nebo proxy.

Správce kontextu odpovědi zavře odpověď, i když zápis selže nebo aplikace skončí dříve. Ilustrativní dvojice časových limitů není pevný termín pro celý přenos; nastavte politiku životnosti stahování podle potřeby zvlášť.

Po úspěšné konzumaci zkontrolujte artefakt, který aplikace očekává, než zveřejníte jeho konečný název. Při přerušení uchovávejte částečný soubor pouze podle záměrné politiky obnovení, s metadaty identifikujícími vzdálenou reprezentaci. Neprázdný dočasný soubor není úspěšné stažení.

Související články