我在使用Python和Requests访问一个流式API时遇到了困难。
API的说明如下:"我们已经启用了一个流端点来请求报价和交易数据,利用持久的HTTP套接字连接。从API中获得实时数据的方式是进行身份验证的HTTP请求并保持HTTP套接字处于打开状态以不断地接收数据。"
我一直在尝试访问数据的方法如下:
似乎两种方法都不起作用,虽然我不知道要在生成器函数中放什么,因为示例不清楚。使用r.iter_lines(),我得到输出:"b'{"status":"connected"}{"status":disconnected"}'"。
我可以访问标头,响应是HTTP 200,但无法获得有效数据,也找不到如何在Python中访问流式HTTP数据的明确示例。任何帮助将不胜感激。该API建议使用Jetty for Java来保持流开放,但我不确定如何在Python中实现这一点。
标头:{'connection': 'keep-alive', 'content-type': 'application/json', 'x-powered-by': 'Express', 'transfer-encoding': 'chunked'}。
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'])
请求文档这里显示了两个有趣的事情:使用生成器/迭代器处理传入数据字段的分块数据。对于流式数据,建议使用如下代码:
for line in r.iter_lines():
print(line)
似乎两种方法都不起作用,虽然我不知道要在生成器函数中放什么,因为示例不清楚。使用r.iter_lines(),我得到输出:"b'{"status":"connected"}{"status":disconnected"}'"。
我可以访问标头,响应是HTTP 200,但无法获得有效数据,也找不到如何在Python中访问流式HTTP数据的明确示例。任何帮助将不胜感激。该API建议使用Jetty for Java来保持流开放,但我不确定如何在Python中实现这一点。
标头:{'connection': 'keep-alive', 'content-type': 'application/json', 'x-powered-by': 'Express', 'transfer-encoding': 'chunked'}。
200 OK
,那显然他已经完成了身份验证。 - woozyking