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 चंक्ड ट्रांसफर कोडिंग का अनुरोध नहीं।

प्रतिक्रिया का कॉन्टेक्स्ट मैनेजर प्रतिक्रिया को बंद कर देता है, भले ही लेखन विफल हो या ऐप्लिकेशन जल्दी रुक जाए। उदाहरण वाला टाइमआउट युग्म पूरे स्थानांतरण के लिए वास्तविक समय-सीमा नहीं है; आवश्यकतानुसार डाउनलोड की जीवनकाल नीति अलग से निर्धारित करें।

सफल उपभोग के बाद, अंतिम नाम प्रकाशित करने से पहले ऐप्लिकेशन द्वारा अपेक्षित आर्टिफ़ैक्ट की जाँच करें। रुकावट पर, आंशिक फ़ाइल को केवल जानबूझकर बनाई गई पुनःआरंभ नीति के अंतर्गत रखें, ऐसे मेटाडेटा के साथ जो दूरस्थ प्रस्तुति की पहचान करे। खाली न होने वाली अस्थायी फ़ाइल सफल डाउनलोड नहीं है।

संबंधित लेख