Это простая программа для получения данных свечей с биржи Binance для нескольких пар. Я обнаружил, что это можно сделать с помощью пакета asyncio.
import websockets
import asyncio
import json
import pprint
async def candle_stick_data():
url = "wss://stream.binance.com:9443/ws/" #steam address
first_pair = 'xlmbusd@kline_1m' #first pair
async with websockets.connect(url+first_pair) as sock:
pairs = '{"method": "SUBSCRIBE", "params": ["xlmbnb@kline_1m","bnbbusd@kline_1m" ], "id": 1}' #other pairs
await sock.send(pairs)
print(f"> {pairs}")
while True:
resp = await sock.recv()
resp=json.loads(resp)
pprint.pprint(resp)
candle = resp['k']
asyncio.get_event_loop().run_until_complete(candle_stick_data())
Я получаю сообщения и меняю тип на dict с json.loads(resp)
. Мой вопрос в том, как я могу получить доступ к значениям dict, потому что candle = resp['k']
вызывает ошибку ключа 'k'. Я новичок в asyncio, возможно, мне он вообще не нужен для получения данных для нескольких пар.
обновленный скриншот сообщения
resp
, что очень хорошо. Вы видите на распечатке ключk
? - person Tim Roberts   schedule 19.03.2021sock.recv()
не получит его целиком. Возможно, вам следует убедиться, что строка заканчивается на}
, прежде чем пытаться ее декодировать. - person Tim Roberts   schedule 19.03.2021