Как читать поток с Python 3?(не с модулем запросов) - PullRequest
1 голос
/ 02 мая 2019

Я создаю 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 () может привести к потере данных.У кого-нибудь есть рекомендации по поводу другого модуля, который обладает аналогичной способностью, которая не приведет к потере данных?

...