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 แบบแบ่งชังก์ที่เว็บไซต์หรือพร็อกซี

ตัวจัดการบริบทของการตอบกลับจะปิดการตอบกลับแม้การเขียนล้มเหลวหรือแอปหยุดก่อนเวลา คู่เวลาหมดเวลาที่แสดงเป็นตัวอย่างไม่ใช่กำหนดเวลาจริงสำหรับการถ่ายโอนทั้งหมด ตั้งนโยบายอายุการดาวน์โหลดแยกต่างหากตามต้องการ

หลังจากบริโภคสำเร็จ ให้ตรวจสอบอาร์ติแฟกต์ที่แอปคาดหวังก่อนเผยแพร่ชื่อสุดท้าย เมื่อถูกขัดจังหวะ ให้เก็บไฟล์บางส่วนไว้ภายใต้นโยบายการเริ่มใหม่ที่ตั้งใจไว้เท่านั้น พร้อมเมทาดาทาที่ระบุการแทนระยะไกล ไฟล์ชั่วคราวที่ไม่ว่างเปล่าไม่ใช่การดาวน์โหลดที่สำเร็จ

บทความที่เกี่ยวข้อง