Отличается ли чтение aiohttp от requests.iter_content?

#python-3.x #python-requests #aiohttp

#питон #python-3.x #python-запросы #python-asyncio #aiohttp

Вопрос:

Я меняю версию запросов на версию aiohttp.

Запросы

 with requests.get(url='url', headers=headers, stream=True) as r:  with open('request_test.mp4', 'wb') as f:  print(int(r.headers['Content-Length']) // (1024 * 10)) # output: 9061.  for index, chunk in enumerate(r.iter_content(chunk_size=1024 * 10)):  print(index) # output: 1 2 3 .... 9061.  f.write(chunk)   

aiohttp

 async with aiohttp.ClientSession() as session:  async with session.get(url='url', headers=headers, timeout=_timeout) as res:  print(res.content_length // (1024 * 10)) # output: 9061.  with open('aiotest.mp4', 'wb') as fd:  count = 0  while True:  chunk = await res.content.read(1024 * 10)  print(count) # output: 1 2 3 .... 11183  count  = 1  if not chunk:  break  fd.write(chunk)  

Что я делаю не так?

Пожалуйста, помогите мне.

Ответ №1:

res.content.read(1024 * 10) считывает до 10 КБ за вызов, не совсем 10 КБ.

Сумма всех длин блоков должна быть точно такой же, как и возвращенная res.content_length .