es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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>

Tags:  , ,

Answer

  1. Avatar for 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ón asyncio.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.

Comments are closed.