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)

Dùng mẫu này với phiên Requests hiện có của ứng dụng, các tuyến proxy, URL và đường dẫn đầu ra tạm thời. Với một tuyến HTTP công khai, danh sách proxy HTTP cung cấp các địa chỉ ứng viên cho ánh xạ proxy của bạn. Mẫu truyền phát tiêu thụ phần thân theo từng bước thay vì lấy response.content rồi ghi một đối tượng thứ hai có kích thước đầy đủ.

Hãy giữ đặc tính đó trong suốt quá trình tải: stream=True hoãn phần thân, nhưng truy cập response.content sau đó vẫn có thể tập hợp toàn bộ vào bộ nhớ. Kích thước đoạn của iter_content là một tùy chọn đọc, không phải yêu cầu mã hóa truyền tải HTTP phân đoạn tại trang web hay proxy.

Trình quản lý ngữ cảnh của phản hồi đóng phản hồi ngay cả khi ghi thất bại hoặc ứng dụng dừng sớm. Cặp thời gian chờ minh họa không phải là hạn chót thời gian thực cho toàn bộ quá trình truyền; hãy đặt chính sách vòng đời của quá trình tải riêng khi cần.

Sau khi tiêu thụ thành công, hãy kiểm tra tạo tác mà ứng dụng mong đợi trước khi công bố tên cuối cùng. Khi bị gián đoạn, chỉ giữ tệp một phần theo một chính sách tiếp tục có chủ đích, kèm siêu dữ liệu nhận dạng biểu diễn từ xa. Một tệp tạm không rỗng không phải là bản tải xuống thành công.

Bài viết liên quan