파이썬 및 요청을 사용하여 스트리밍 API에 액세스하는 데 어려움을 겪고 있습니다.파이썬 HTTP 스트리밍에 대한 이해
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 관심의 두 가지를 보여줍니다. 내가 발전기 기능에 넣어 무슨 생각을했습니다 없지만 예제가 불분명하기 때문에, 제대로 작동
for line in r.iter_lines():
print(line)
어느 : 스트리밍 데이터의 경우, 같은 코드를 사용하여 제안합니다. r.iter_lines()를 사용하면 다음과 같은 결과가 나타납니다. "b '{"status ":"connected "} {"status ": disconnected"}' "
헤더에 액세스 할 수 있으며 응답은 HTTP 200입니다. , 유효한 데이터를 얻을 수 없거나 파이썬에서 스트리밍 HTTP 데이터에 액세스하는 방법에 대한 명확한 예제를 찾을 수 없다면 도움이 될 것입니다. API는 스트림을 열어두기 위해 Jetty for Java를 사용하도록 권장하지만 어떻게해야할지 모르겠습니다.
헤더 : { '연결': 'keep-alive', 'content-type': 'application/json', 'x-powered-by': 'Express', 'transfer-encoding ':'chunked '}
브라우저에 URL을 넣으면 "잘못된 인증 헤더"메시지가 반환됩니다. 인증을 받아야합니까? 그리고/또는 JSON 결과를 제대로 읽고 있습니까? – verbsintransit
OP에서 '200 OK'가 표시되면 @verbsintransit 분명히 그는 인증을했습니다. – woozyking
API에 실제로 인증이 필요합니다. 단순화를 위해 인증 라인을 생략했습니다. 키를 게시 하겠지만 거래 내역과 연결되어 있습니다. 비 스트리밍 요청의 경우 요청 .json(). 여기에서도해야 할 수도 있습니다. 확실하지 않습니다. –