Я использую следующий код для проверки количества секунд, в течение которых HTTP-соединение может оставаться активным:
start_time = time.time()
try:
r = requests.get(BIG_FILE_URL, stream=True)
total_length = r.headers['Content-length']
for chunk in r.iter_content(chunk_size=CHUNK_SIZE):
time.sleep(1)
# ... except and more logic to report total time and percentage downloaded
Чтобы быть уверенным, Python не просто загружает все сразу и создает генератор Я использовал tcpdump. Он отправляет один пакет в секунду (приблизительно), но я не нашел, что заставляет сервер отправлять один блок за раз и как это делает библиотека запросов.
Я проверил несколько вопросов SOF и посмотрел в документации библиотеки запросов, но все ресурсы объясняют, как использовать библиотеку для загрузки больших файлов, и ни один из них не объясняет внутреннюю часть параметра stream = True.
Мой вопрос: что в Заголовки протокола tcp или HTTP-запроса заставляют сервер отправлять один блок за раз, а не весь файл сразу?