Я создаю HTTP-клиент, который читает поток с сервера.Сейчас я использую модуль requests
, но у меня проблемы с response.iter_lines()
.Каждые несколько итераций я теряю данные.
Python Ver.3.7
запросов Вер.2.21.0
Я пробовал разные методы, включая использование генераторов (которые по какой-то причине поднимают StopIteration
для очень небольшого количества итераций).Я попытался установить chunk_size=None
, чтобы предотвратить потерю данных, но проблема все еще возникает.
response = requests.get(url, headers=headers, stream=True, timeout=60 * 10)
gen = response.iter_lines(chunk_size=None)
try:
for line in gen:
json_data = json.loads(line)
yield json_data
except StopIteration:
return
def http_parser():
json_list = []
response = requests.get(url, headers=headers, stream=True, timeout=60 * 10)
for line in respone.iter_lines():
json_data = json.loads(line)
json_list.append(json_data)
return json_list
Обе функции вызывают потерю данных.
В документации requests
этоупоминается как предупреждение о том, что iter_lines () может привести к потере данных.У кого-нибудь есть рекомендации по поводу другого модуля, который обладает аналогичной способностью, которая не приведет к потере данных?