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)

Përdorni këtë model me sesionin ekzistues Requests të aplikacionit, rrugët e proxy, URL-në dhe shtegun e daljes së përkohshme. Për një rrugë publike HTTP, lista e proxy-ve HTTP ofron adresa kandidate për hartëzimin tuaj të proxy. Modeli i transmetimit konsumon trupin në mënyrë incrementale në vend që të marrë response.content dhe pastaj të shkruajë një objekt të dytë me madhësi të plotë.

Ruani atë veti gjatë gjithë shkarkimit: stream=True e shtyn trupin, por aksesimi i response.content më pas mund ta mbledhë përsëri të gjithë në memorie. Madhësia e copës së iter_content është një preferencë leximi, jo një kërkesë për kodim të transferimit HTTP me copa në faqe ose te proxy.

Menaxheri i kontekstit të përgjigjes e mbyll përgjigjen edhe nëse një shkrim dështon ose aplikacioni ndalon herët. Çifti ilustrues i afateve nuk është një afat real për të gjithë transferimin; vendosni politikën e jetëgjatësisë së shkarkimit veçmas sipas nevojës.

Pas konsumimit të suksesshëm, kontrolloni artefaktin që pret aplikacioni përpara se të publikoni emrin përfundimtar. Në ndërprerje, mbani skedarin e pjesshëm vetëm sipas një politike të qëllimshme rifillimi, me metadata që identifikojnë paraqitjen në distancë. Një skedar i përkohshëm jo bosh nuk është shkarkim i suksesshëm.

Artikuj të ngjashëm