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)

Koristite ovaj obrazac s postojećom Requests sesijom aplikacije, proxy rutama, URL-om i privremenom izlaznom putanjom. Za javnu HTTP rutu, lista HTTP proxyja daje kandidatske adrese za vaše proxy mapiranje. Obrazac strujanja troši tijelo postupno umjesto da pribavi response.content i zatim zapiše drugi objekt pune veličine.

Zadržite to svojstvo tokom cijelog preuzimanja: stream=True odgađa tijelo, ali pristup response.content nakon toga ipak može sve skupiti u memoriju. Veličina dijela kod iter_content je preferencija čitanja, a ne zahtjev za HTTP kodiranjem prijenosa u dijelovima na web lokaciji ili proxyju.

Upravitelj konteksta odgovora zatvara odgovor čak i ako pisanje ne uspije ili se aplikacija zaustavi ranije. Ilustrativni par vremenskih ograničenja nije stvarni krajnji rok za cijeli prijenos; postavite politiku trajanja preuzimanja odvojeno prema potrebi.

Nakon uspješnog trošenja, provjerite artefakt koji aplikacija očekuje prije objavljivanja konačnog naziva. Pri prekidu zadržite djelomičnu datoteku samo pod namjernom politikom nastavka, s metapodacima koji identificiraju udaljenu reprezentaciju. Neprazna privremena datoteka nije uspješno preuzimanje.

Povezani članci