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)

Uporabite ta vzorec z obstoječo sejo Requests aplikacije, potmi proxyja, URL-jem in začasno izhodno potjo. Za javno pot HTTP seznam proxyjev HTTP ponuja kandidatne naslove za vaše preslikavanje proxyja. Vzorec pretakanja troši telo postopoma, namesto da bi pridobil response.content in nato zapisal drug predmet polne velikosti.

To lastnost ohranite ves čas prenosa: stream=True odloži telo, a dostop do response.content pozneje ga lahko še vedno zbere v celoti v pomnilniku. Velikost dela pri iter_content je nastavitev branja, ne zahteva za HTTP prenosno kodiranje po delih na spletnem mestu ali proxyju.

Upravitelj konteksta odgovora zapre odgovor, tudi če pisanje spodleti ali se aplikacija ustavi zgodaj. Prikazani par časovnih omejitev ni resnični rok za celoten prenos; nastavite politiko življenjske dobe prenosa ločeno, kot je potrebno.

Po uspešni porabi preverite artefakt, ki ga aplikacija pričakuje, preden objavite njegovo končno ime. Ob prekinitvi delno datoteko obdržite le v skladu z namerno politiko nadaljevanja, z metapodatki, ki identificirajo oddaljeno predstavitev. Neprazna začasna datoteka ni uspešen prenos.

Sorodni članki