У меня есть следующая последовательность кода Python 3, которая загружает zip-архив с веб-сервера и извлекает содержимое, но все обернуто тайм-аутом.
timeout_period = 60000
extraction_dir = /tmp/archive_contents
response = urllib.request.urlopen("http://webserver.com/archive.zip")
timer = threading.Timer(timeout_period, response.close)
timer.start()
try:
with zipfile.ZipFile(io.BytesIO(response.read())) as zip_archive:
zip_archive.extractall(extraction_dir)
except AttributeError:
# Thrown by the object read() method when the fp is closed by the Timer thread
pass
timer.cancel()
Иногда мне предоставляют http.clientИсключение .IncompleteRead.
Я не верю, что исключение связано с тайм-аутом, поскольку оно происходит до истечения периода тайм-аута, а также легко воспроизвести истекающий период тайм-аута и увидеть, что оно всегда вызывает исключение AttributeError.
Почему это происходит и как я могу это решить?
Я мог бы просто поймать это и покончить с этим, но я хочу знать, почему это исключение достигает моего кода, так как я это делаюне использовать модуль http.client напрямую.Разве это не должно быть обработано urllib, в конечном итоге выдает мне другое исключение, не связанное с http.client?