Skidanje preko proxyja pomoću Requestsa i iter_contenta
Trošite odgovor Requestsa postepeno, uz normalne provjere statusa, čišćenje i promišljenu politiku za djelimični izlaz.
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)
Primijenite ovaj obrazac na postojeću Requests sesiju aplikacije, proxy rute, URL i privremenu izlaznu putanju. Za javnu HTTP rutu spisak HTTP proxyja nudi kandidatske adrese za vaše proxy mapiranje. Streaming obrazac troši tijelo postepeno, umjesto da dohvati response.content pa zapiše drugi objekat pune veličine.
Sačuvajte to svojstvo kroz cijelo skidanje: stream=True odgađa tijelo, ali pristup response.content poslije toga ipak može sve sabrati u memoriju. Veličina dijela u iter_content je preferencija čitanja, a ne zahtjev za HTTP prenosnim kodiranjem u dijelovima na sajtu ili proxyju.
Kontekstni menadžer odgovora zatvara odgovor i kad pisanje ne uspije ili se aplikacija zaustavi ranije. Prikazani par tajmauta nije stvarni rok za cijeli prenos; podesite politiku trajanja skidanja zasebno po potrebi.
Poslije uspješnog trošenja, provjerite artefakt koji aplikacija očekuje prije objavljivanja konačnog imena. Ako dođe do prekida, čuvajte djelimičnu datoteku samo po promišljenoj politici nastavljanja, uz metapodatke koji identificiraju udaljenu reprezentaciju. Neprazna privremena datoteka nije uspješno skidanje.