我很努力地使用Python和请求来访问流API。了解Python HTTP流式传输
API说:“我们已经启用了一个流式端点来利用持久HTTP套接字连接请求报价和交易数据。来自API的流数据包括做一个Authenticated 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显示的利息两件事情:使用使用的发电机/迭代器与分块数据,在数据字段中传递。对于流数据,它建议使用如下代码:
for line in r.iter_lines():
print(line)
既不似乎工作,虽然我不知道把发电机的功能是什么,因为例子是不清楚。使用r.iter_lines(),我得到的输出:“b”{“status”:“connected”} {“status”:disconnected“}'”
我可以访问标题,响应是HTTP 200 ,但无法获得有效的数据,或找到有关如何在python中访问流HTTP数据的明确示例。在Python中执行此操作。
标题:{'connection':'keep-alive','content-type':'application/json','x-powered-by':'Express','transfer-encoding ':'chunked'}
把你的网址放到我的浏览器中会返回一个“无效的授权标题”消息,你需要进行身份验证吗?和/或,你是否正确读取JSON结果? – verbsintransit
@verbsintransit如果OP看到'200 OK'则显然他已经认证完成 – woozyking
API确实需要授权,为了简单起见,我忽略了授权行,我会发布密钥,但是它们与我的交易账户相关联,对于非流式请求,我使用Request .json()。我可能也需要在这里做 - 不知道。 –