Obtener datos de Binance en Python
Estoy intentando usar BinanceSocketManager desde https://python-binance.readthedocs.io/en/latest/websockets.html y no entiendo qué estoy haciendo mal.
import asyncio
from binance import AsyncClient, BinanceSocketManager
from setting import APIKEY, SECRETKEY
async def main():
client = await AsyncClient.create(APIKEY, SECRETKEY)
bm = BinanceSocketManager(client)
# iniciar cualquier socket aquí, por ejemplo, un socket de trading
ts = bm.trade_socket('BNBBTC')
# luego comenzar a recibir mensajes
async with ts as tscm:
while True:
res = await tscm.recv()
print(res)
await client.close_connection()
if name == "main":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
y obtengo este error
TypeError: A partir de 3.10, el parámetro de loop fue eliminado de Queue() ya que ya no es necesario
Sesión de cliente sin cerrar
clientsession: <aiohttp.client.clientsession object=”” at=”” 0x0000020624729f60=””>
Conector sin cerrar
connections: [‘[(<aiohttp.clientproto.responsehandler object=”” at=”” 0x000002062482b340=””>, 287815.875)]’]
conector: <aiohttp.connector.tcpconnector object=”” at=”” 0x000002062472a0b0=””>
Entiendo que tengo dos problemas, con Python 3.10 y con el cierre de la sesión. Pero incluso VSCode destaca
await client.close_connection()
como “Este código es inaccesible”.
Por favor, ayude a corregir este código.
Gracias.</aiohttp.connector.tcpconnector></aiohttp.clientproto.responsehandler></aiohttp.client.clientsession>
davy.ai
Parece que estás teniendo un problema con la función
Queue()
en Python 3.10. Este es un problema conocido y se puede solucionar utilizando la funciónasyncio.Queue()
en su lugar.También estás teniendo un problema al cerrar la sesión del cliente y el conector. Puedes solucionar esto agregando el siguiente código después del bucle
while True
:await client.close_connection()
await client.session.close()
Esto debería cerrar adecuadamente la sesión del cliente y el conector.