我正在尝试连接到 http API。此 API 使用 ndjson 响应,即换行符分隔的 json 字符串。在我全部下载它们之前,我需要一一使用这些行(实际上甚至在服务器知道它将在未来的行上输出什么之前)。在 Python 中,我可以通过以下方式实现:
import requests, json
lines = requests.get("some url", stream=True).iter_lines()
for line in lines:
#parse line as JSON and do whatever
它就像魅力一样。
我希望在 Nim 中完成相同的效果,但程序会阻塞。例如,我尝试仅加载响应的第一行:
import httpclient, json, streams
var stream = newHttpClient().get("some url").bodyStream
var firstLine = ""
discard stream.readLine(firstLine )
echo firstLine
但没有运气 - 也就是说,程序永远不会回声。我也尝试过streams.lines
迭代器,但这也没有帮助。
是否有一些类似于 Python 片段的习语可以让我轻松地逐行使用 http 响应流?