हालांकि मैं मौजूदा पुस्तकालय का उपयोग करने के ग्रेगरी के सुझाव से सहमत हूं, यह ध्यान देने योग्य है कि आप Range
HTTP शीर्षलेख का उपयोग कर ऐसा कर सकते हैं। यदि सर्वर बाइट-रेंज अनुरोध स्वीकार करता है, तो आप फ़ाइल के कई हिस्सों को समानांतर में डाउनलोड करने के लिए कई थ्रेड शुरू कर सकते हैं। यह टुकड़ा, उदाहरण के लिए, केवल बाइट्स 0..65535 निर्दिष्ट फ़ाइल के डाउनलोड करेगा:
import urllib2
url = 'http://example.com/test.zip'
req = urllib2.Request(url, headers={'Range':'bytes=0-65535'})
data = urllib2.urlopen(req).read()
आप दूरस्थ संसाधन आकार निर्धारित और देखो एक HEAD अनुरोध भेजकर कि सर्वर का समर्थन करता है अनुरोध लेकर कर सकते हैं:
import urllib2
class HeadRequest(urllib2.Request):
def get_method(self):
return "HEAD"
url = 'http://sstatic.net/stackoverflow/img/sprites.png'
req = HeadRequest(url)
response = urllib2.urlopen(req)
response.close()
print respose.headers
ऊपर प्रिंट:
Cache-Control: max-age=604800
Content-Length: 16542
Content-Type: image/png
Last-Modified: Thu, 10 Mar 2011 06:13:43 GMT
Accept-Ranges: bytes
ETag: "c434b24eeadecb1:0"
Date: Mon, 14 Mar 2011 16:08:02 GMT
Connection: close
से हम देख सकते हैं कि फ़ाइल का आकार 16,542 बाइट्स ('Content-Length'
) है और सर्वर बाइट सीमाओं का समर्थन करता है (012,381,)।
आमतौर पर, यह समानांतर में फ़ाइल के कई हिस्सों को डाउनलोड करने के लिए तेज़ नहीं है, क्योंकि आप अभी भी अपने नेटवर्क कनेक्शन की बाधा तक सीमित हैं। केवल जब सर्वर केवल सीमित बैंडविड्थ * प्रति कनेक्शन * की अनुमति देता है, तो आपको एक सुधार मिलेगा। –
यदि आप किसी भी तरह से इंप्रेशन के तहत हैं कि यह डाउनलोड गति प्राप्त करेगा जो आपको धार के साथ मिलती है, तो आप यह जानकर निराश होंगे कि एक क्लाइंट, एकल सर्वर केस में आपकी मदद नहीं करेगा। यह * तेज * है * यदि आप एकाधिक स्रोतों से डाउनलोड कर रहे हैं * और * कि आपके कुल डाउनलोड बैंडविड्थ की तुलना में प्रत्येक में कम अपलोड बैंडविड्थ है। आपके डाउनलोड बैंडविड्थ से अधिक या उसके बराबर एक (उपलब्ध) अपलोड बैंडविड्थ के साथ एक सर्वर से सीधे डाउनलोड से कोई डाउनलोड तेज नहीं है। –
@ सेवन: यह झूठा है। वास्तविक दुनिया में, यह आमतौर पर अधिकतर स्ट्रीमों के साथ डाउनलोड करने के लिए अधिकांश सर्वरों के अधिकांश कनेक्शन पर बहुत तेज़ होता है। यह दुर्भाग्यपूर्ण है, और कारणों को ट्रैक करना मुश्किल हो सकता है, लेकिन यह वहां है और बहुत से लोगों के पास इसका सामना करने के अलावा कोई विकल्प नहीं है। ग्लेन के लिए –