Я полагаю, ваш сервер поддерживает Диапазон запросов .Вы запрашиваете у сервера заголовок Range с начальным байтом и конечным байтом требуемого диапазона:
import urllib2
req = urllib2.Request(url)
req.headers['Range'] = 'bytes=%s-%s' % (startByte, endByte)
f = urllib2.urlopen(req)
f.read()
Вы можете реализовать объект файла и всегда загружать тольконеобходимый кусок файла с сервера.Почти каждая библиотека принимает файловый объект в качестве входных данных.
Вероятно, он будет медленным из-за задержки в сети.Вам нужно будет загрузить более крупные фрагменты файла, предварительно загрузить файл в отдельном потоке и т. Д. Другими словами, вам нужно будет реализовать клиентскую логику потоковой передачи самостоятельно.