Sťahovanie cez proxy s Requests a iter_content
Konzumujte odpoveď Requests postupne, pričom zachovajte bežné kontroly stavu, upratovanie a zámernú politiku pre čiastočný výstup.
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žite s existujúcou reláciou Requests aplikácie, trasami proxy, URL a dočasnou výstupnou cestou. Pre verejnú trasu HTTP poskytuje zoznam HTTP proxy kandidátske adresy pre vaše mapovanie proxy. Vzor streamovania konzumuje telo postupne namiesto získania response.content a následného zápisu druhého objektu plnej veľkosti.
Túto vlastnosť zachovajte počas celého sťahovania: stream=True odkladá telo, ale prístup k response.content potom ho stále môže zhromaždiť celé v pamäti. Veľkosť časti pri iter_content je preferencia čítania, nie požiadavka na HTTP prenosové kódovanie po častiach na webe alebo proxy.
Správca kontextu odpovede zatvorí odpoveď, aj keď zápis zlyhá alebo aplikácia skončí skôr. Ilustratívna dvojica časových limitov nie je pevným termínom pre celý prenos; nastavte politiku životnosti sťahovania podľa potreby zvlášť.
Po úspešnej konzumácii skontrolujte artefakt, ktorý aplikácia očakáva, pred zverejnením jeho konečného názvu. Pri prerušení uchovávajte čiastočný súbor len podľa zámernej politiky obnovenia, s metadátami identifikujúcimi vzdialenú reprezentáciu. Neprázdny dočasný súbor nie je úspešné stiahnutie.