user_timeout в библиотеке python-binance не работает. Как мне заставить это работать?

#python #websocket #timeout #binance

#python #websocket #тайм-аут #binance

Вопрос:

Я пытаюсь установить тайм-аут, чтобы моя база данных загружалась с записью каждые 1 секунду. я пробовал решение из документации python-binance, но, похоже, оно не работает.

Прямо сейчас я получаю слишком много данных, например, 20 записей за 1 секунду, и я бы хотел, чтобы он получал 1 запись за 1 секунду.

python-binance doc: https://python-binance.readthedocs.io/en/latest/websockets.html#threadedwebsocketmanager-websocket-usage

Функция с таймаутом:

 bm = BinanceSocketManager(client, user_timeout=1000)
 

Мой код:

 import pandas as pd
import sqlalchemy
import asyncio
from binance import AsyncClient, BinanceSocketManager

def createframe(msg):
    df = pd.DataFrame([msg])
    df = df.loc[:, ['s', 'E', 'p']]
    df.columns = ['symbol', 'Time', 'Price']
    df.Price = df.Price.astype(float)
    df.Time = pd.to_datetime(df.Time, unit='ms')
    return df

async def main():
    client = await AsyncClient.create()
    bm = BinanceSocketManager(client, user_timeout=1000)
    # start any sockets here, i.e a trade socket
    ts = bm.trade_socket('BTCUSDT')
    # then start receiving messages
    async with ts as tscm:
        while True:
            res = await tscm.recv()
            frame = createframe(res)
            print(frame)
            frame.to_sql('BTCUSDT', 'sqlite:///stream.db', if_exists='append', index=False)

    await client.close_connection()

if __name__ == "__main__":

    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())