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)

Gunakan corak ini dengan sesi Requests sedia ada aplikasi, laluan proksi, URL dan laluan output sementara. Untuk laluan HTTP awam, senarai proksi HTTP menyediakan alamat calon untuk pemetaan proksi anda. Corak penstriman menggunakan badan secara berperingkat dan bukannya mendapatkan response.content kemudian menulis objek kedua bersaiz penuh.

Kekalkan sifat itu sepanjang muat turun: stream=True menangguhkan badan, tetapi mengakses response.content selepas itu masih boleh mengumpul semuanya ke dalam memori. Saiz cebisan iter_content ialah keutamaan bacaan, bukan permintaan pengekodan pemindahan HTTP bercebis di laman web atau proksi.

Pengurus konteks respons menutup respons walaupun penulisan gagal atau aplikasi berhenti awal. Pasangan tamat masa ilustratif bukan tarikh akhir masa sebenar untuk keseluruhan pemindahan; tetapkan dasar jangka hayat muat turun secara berasingan mengikut keperluan.

Selepas penggunaan berjaya, semak artifak yang dijangka oleh aplikasi sebelum menerbitkan nama akhirnya. Jika terganggu, simpan fail separa hanya di bawah dasar sambungan yang disengajakan, dengan metadata yang mengenal pasti representasi jauh. Fail sementara yang tidak kosong bukan muat turun yang berjaya.

Artikel berkaitan