Letöltés proxyn keresztül Requests és iter_content használatával
Fogyassza a Requests válaszát fokozatosan, miközben megőrzi a szokásos állapotellenőrzéseket, a tisztítást és a részleges kimenet szándékos szabályát.
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)
Használja ezt a mintát az alkalmazás meglévő Requests-munkamenetével, proxyútvonalaival, URL-jével és ideiglenes kimeneti útvonalával. Nyilvános HTTP-útvonal esetén a HTTP-proxylista jelölt címeket kínál a proxy-hozzárendeléséhez. A streamelési minta fokozatosan fogyasztja a törzset, ahelyett hogy megszerezné a response.content elemet, majd egy második teljes méretű objektumot írna.
Tartsa meg ezt a tulajdonságot a letöltés során: a stream=True elhalasztja a törzset, de a response.content későbbi elérése továbbra is összegyűjtheti az egészet a memóriában. A iter_content darabmérete olvasási preferencia, nem HTTP darabolt átviteli kódolás iránti kérés a webhelyen vagy a proxyn.
A válasz kontextuskezelője akkor is lezárja a választ, ha egy írás meghiúsul, vagy az alkalmazás korán leáll. A szemléltetett időtúllépés-pár nem valós idejű határidő a teljes átvitelre; állítsa be a letöltés élettartam-szabályát szükség szerint külön.
Sikeres fogyasztás után ellenőrizze az alkalmazás által várt artefaktumot, mielőtt közzéteszi a végleges nevét. Megszakítás esetén a részleges fájlt csak szándékos folytatási szabály mellett tartsa meg, a távoli reprezentációt azonosító metaadatokkal. A nem üres ideiglenes fájl nem sikeres letöltés.