如何使用Python 3读取流? (不适用于请求模块)

时间:2019-05-02 07:36:49

标签: python python-3.x python-requests client http-streaming

我正在构建一个HTTP客户端,该客户端从服务器读取流。现在,我正在使用requests模块,但是在使用response.iter_lines()时遇到了麻烦。每重复几次,我都会丢失数据。

Python版本。 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()可能导致数据丢失的警告。 是否有人推荐另一个功能类似但不会造成数据丢失的模块?

0 个答案:

没有答案