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)

Користете ја оваа шема со постоечката сесија на Requests во апликацијата, прокси рутите, URL-то и привремената излезна патека. За јавна HTTP рута, списокот со HTTP проксија обезбедува кандидат адреси за вашето прокси мапирање. Шемата на пренос го консумира телото постепено наместо да добие response.content и потоа да запише втор објект со целосна големина.

Задржете го тоа својство во текот на целото преземање: stream=True го одложува телото, но пристапот до response.content потоа сепак може да го собере целото во меморија. Големината на делот кај iter_content е претпочитање за читање, а не барање за HTTP кодирање на пренос по делови на страницата или проксито.

Контекстниот менаџер на одговорот го затвора одговорот дури и ако запишувањето не успее или апликацијата запре порано. Илустративниот пар таймаути не е вистински рок за целиот пренос; поставете ја политиката за животниот век на преземањето одделно според потреба.

По успешно консумирање, проверете го артефактот што го очекува апликацијата пред да го објавите конечниот назив. При прекин, чувајте ја делумната датотека само според намерна политика за продолжување, со метаподатоци што го идентификуваат далечинското претставување. Непразна привремена датотека не е успешно преземање.

Поврзани статии