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