【发布时间】:2018-07-29 00:01:05
【问题描述】:
我正在尝试从 API 处理 jsonlines,但遇到了 requests.iter_lines() 不及时的问题。我现在必须尝试合并 requests.iter_content(chunk_size=1024*1024)。我正在尝试处理我需要获取一个不完整的 jsonline[1] 并将其附加到下一个 chunk_size 的逻辑,以便它成为一个完整的。
我目前的尝试是运行一系列 if 语句来检测不良状态 [2],然后重建它并继续处理,但我未能在所有可能最终出现的状态下重新组装它。有人有一个经过深思熟虑的解决这个问题的例子吗?
[1]
例子:
第一个块的最后一项:
{'test1': 'value1', 'test2': '值
第二个块的第一个项目:
e2', 'test3': 'value3'}
[2] def不完整处理器(main_chunk):
if not main_chunk[0].startswith('{') and not main_chunk[-1].endswith('\n'):
first_line = str(main_chunk[0])
last_line = str(main_chunk[-1])
main_chunk.pop(0)
main_chunk.pop(-1)
return first_line, last_line
if not main_chunk.startswith('{') and main_chunk[-1].endswith('\n'):
first_line = str(main_chunk[-1])
main_chunk.pop(0)
return first_line
if main_chunk.startswith('{') and not main_chunk[-1].endswith('\n'):
last_line = str(main_chunk[-1])
main_chunk.pop(-1)
return last_line
【问题讨论】:
标签: python-3.x python-requests streaming chunking jsonlines