Файл загрузки Python останавливается при потере пакетов - PullRequest
1 голос
/ 28 марта 2012

Я пытаюсь загрузить zip-файлы размером от 7 до 30 МБ.Иногда через него проходит 4 или 5 файлов, но здесь недавно я не могу загрузить даже 1 файл.Мой скрипт не выдает ошибку, соединение просто перестает получать данные.После проверки связи с исходным веб-сайтом и просмотра моего сетевого монитора загрузка, по-видимому, останавливается именно на пинге, где «истекло время ожидания запроса».

Я пробовал urllib2, urllib и httplib2.

Сurllib2 Я пробовал:

remoteFile = urllib2.urlopen(url)
content = remoteFile.read()
remoteFile.close()

f = open(fpath, 'wb')
f.write(content)
f.close()

и

req = Request(url)
# Open the url
f = urlopen(req)
# Open our local file for writing
local_file = open(fpath, "wb")
#Write to our local file
local_file.write(f.read())
local_file.close()

С urllib:

f = urllib.urlopen(url)
# Open our local file for writing
local_file = open(fpath, "wb")
#Write to our local file
local_file.write(f.read())
local_file.close()

С httplib2:

h = httplib2.Http(".cache")
resp, content = h.request(url, "GET")
f = open(fpath, 'wb')
f.write(content)
f.close()

Я дажепопытался загрузить чанками:

req = urllib2.urlopen(url)
downloaded = 0
CHUNK = 256 * 10240
with open(file, 'wb') as fp:
    while True:
        chunk = req.read(CHUNK)
        downloaded += len(chunk)
        print str(downloaded/1000000.0) + 'Mb'
        if not chunk: break
        fp.write(chunk)

, но он остановился после 3-го чанка из-за отсутствующего пакета.Я пробовал это на небольших загрузках с других сайтов, поэтому я знаю, что я их правильно кодирую.Опять же, это никогда не выдает ошибку.Модуль Python не закрывается очень долго, 20 минут или дольше, когда закрывается соединение.

Мне наконец пришлось сдаться и просто написать на C #.До сих пор у меня не было проблем.Питон не обрабатывает потерю пакетов?

...