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)

Bu namunani ilovaning mavjud Requests seansi, proksi yo‘nalishlari, URL va vaqtinchalik chiqish yo‘li bilan ishlating. Ommaviy HTTP yo‘nalishi uchun HTTP proksilar ro‘yxati proksi xaritangiz uchun nomzod manzillarni beradi. Oqim namunasi tanani bosqichma-bosqich iste'mol qiladi, response.content ni olib, keyin ikkinchi to‘liq o‘lchamli obyektni yozish o‘rniga.

Bu xususiyatni butun yuklab olish davomida saqlang: stream=True tanani kechiktiradi, ammo keyin response.content ga murojaat qilish baribir hammasini xotirada to‘plashi mumkin. iter_content ning bo‘lak o‘lchami o‘qish afzalligi, sayt yoki proksidagi HTTP bo‘lakli uzatish kodlashiga so‘rov emas.

Javobning kontekst menejeri javobni yopadi, hatto yozish muvaffaqiyatsiz bo‘lsa yoki ilova erta to‘xtasa ham. Misoldagi taymaut juftligi butun uzatish uchun haqiqiy muddat emas; kerak bo‘lsa yuklab olishning umr siyosatini alohida belgilang.

Muvaffaqiyatli iste'moldan so‘ng, yakuniy nomni e'lon qilishdan oldin ilova kutgan artefaktni tekshiring. Uzilish bo‘lsa, qisman faylni faqat ongli davom ettirish siyosati ostida saqlang, masofaviy tasvirni aniqlaydigan metadata bilan. Bo‘sh bo‘lmagan vaqtinchalik fayl muvaffaqiyatli yuklab olish emas.

O'xshash maqolalar