Python と Requests を使用してストリーミング 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'])
ここの Requests ドキュメントは、興味深い 2 つのことを示しています。 data フィールドに渡されたチャンク データで使用するジェネレーター/イテレーターを使用します。ストリーミング データの場合、次のようなコードを使用することをお勧めします。
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'}