我正在努力使用 Python 和请求访问流 API。
API 内容:“我们启用了一个流端点,以便利用持久的 HTTP 套接字连接来请求报价和交易数据。来自 API 的流数据包括发出经过身份验证的 HTTP 请求并保持 HTTP 套接字打开以持续接收数据”。
我如何尝试访问数据:
s = requests.Session()
def streaming(symbols):
url = 'https://stream.tradeking.com/v1/market/quotes.json'
payload = {'symbols': ','.join(symbols)}
return s.get(url, params=payload, stream=True)
r = streaming(['AAPL', 'GOOG'])
请求文档here https://requests.readthedocs.io/en/latest/user/advanced/显示两件有趣的事情:使用生成器/迭代器来处理在数据字段中传递的分块数据。对于流数据,建议使用以下代码:
for line in r.iter_lines():
print(line)
尽管我不知道在生成器函数中放入什么,但似乎都不起作用,因为示例不清楚。使用 r.iter_lines(),我得到输出: "b'{"status":"connected"}{"status":disconnected"}'"
我可以访问标头,响应是 HTTP 200,但无法获取有效数据,或者找到有关如何在 python 中访问流式 HTTP 数据的清晰示例。任何帮助,将不胜感激。 API 建议使用 Java 的 Jetty 来保持流打开,但我不确定如何在 Python 中执行此操作。
标头:{'connection':'keep-alive','content-type':'application/json','x-powered-by':'Express','transfer-encoding':'chunked'}