#!/usr/bin/python import httplib, time from urlparse import urlparse loc = "http://noslor/ubuntu-7.04-desktop-i386.iso" pos = 0 step = 1048576 def get_piece(): global pos pos += 1 if pos > 100: # stop after 100MB return (0,0) return (pos*step, step) file = open('output', 'w') def main(): global place, file connection = httplib.HTTPConnection(urlparse(loc)[1]) while True: begin, size = get_piece() place = begin end = begin + size #print 'fetching %s bytes starting at %s and ending at %s' % (size, begin, end) if size <= 0: break else: #connection.request('GET', urlparse(loc)[2]) connection.request('GET', urlparse(loc)[2], headers={'Range':'bytes=%s-%s' % (begin, end)}) response = connection.getresponse() while True: data = response.read(4096) if data == '': break write(data) if place > end: break connection.close() def write(data): global place, file file.write(data) place = place + len(data) if __name__ == '__main__': start_t = time.time() main() end_t = time.time() print end_t - start_t