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 մասնատված փոխանցման կոդավորման հարցում։

Պատասխանի կոնտեքստի կառավարիչը փակում է պատասխանը նույնիսկ այն դեպքում, երբ գրառումը ձախողվում է կամ հավելվածը շուտ է կանգ առնում։ Օրինակային timeout զույգը ամբողջ փոխանցման համար պատի ժամացույցի վերջնաժամկետ չէ. սահմանեք ներբեռնման կյանքի տևողության քաղաքականությունը առանձին՝ ըստ անհրաժեշտության։

Հաջող սպառումից հետո, վերջնական անվանումը հրապարակելուց առաջ ստուգեք հավելվածի ակնկալած արտեֆակտը։ Ընդհատման դեպքում մասնակի ֆայլը պահեք միայն միտումնավոր վերսկսման քաղաքականությամբ՝ հեռավոր ներկայացումը նույնականացնող մետատվյալների հետ։ Ոչ դատարկ ժամանակավոր ֆայլը հաջող ներբեռնում չէ։

Առնչվող հոդվածներ