我收到了一个ChunkedEncodingError(e)
使用 Python 的请求。我正在使用以下内容来破坏 JSON:
r = requests.get(url, headers=auth, stream=True)
并且迭代每一行,使用回车作为分隔符,这就是这个 API 区分不同 JSON 事件的方式。
for d in r.iter_lines(delimiter="\n"):
d += "\n"
sock.send(d)
我在回车上划定界限,然后将其添加回端点,我将日志推送到实际上也期望在每个事件结束时有回车。这似乎适用于大约 100k 的日志文件。当我尝试拨打更大的电话时,我会收到以下信息:
for d in r.iter_lines(delimiter="\n"):
logs_1 | File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 783, in iter_lines
logs_1 | for chunk in self.iter_content(chunk_size=chunk_size, decode_unicode=decode_unicode):
logs_1 | File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 742, in generate
logs_1 | raise ChunkedEncodingError(e)
logs_1 | requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(0 bytes read)', IncompleteRead(0 bytes read))
更新:我发现 APINoneType
在某个时候也会发回 a 。那么,我如何才能在响应中的某处解释这个空字节而不把所有东西都炸毁呢?每个单独的事件都以 结束\n
,我需要能够单独检查每个事件。我应该分块内容而不是iter_lines
?然后确保NoneType
块中没有?这样我就不会尝试iter_lines
超过 aNoneType
并且它会爆炸?