【问题标题】:Binance websocket sending duplicate dataBinance websocket发送重复数据
【发布时间】:2021-08-09 09:00:11
【问题描述】:

这是我获取期货报价数据的代码。它似乎正在工作,但在某些滴答声中,我再次收到相同的数据。

import pandas as pd
from binance.client import Client
from binance import BinanceSocketManager
import asyncio

api_key ='***'
api_secret ='***'

#Individual Futures Socket
client1 = Client(api_key=api_key,api_secret=api_secret)
bsm = BinanceSocketManager(client1)
socket = bsm.individual_symbol_ticker_futures_socket(symbol='ETHUSDT')

#Convert to dataframe
def createframe(msg):
    df = pd.DataFrame([msg['data']])
    df = df.loc[:, ['s', 'E', 'c']]
    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():
    while True:
        await socket.__aenter__()
        msg = await socket.recv()
        frame = createframe(msg)
        print(frame)

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

得到以下输出:

    symbol                    Time    Price
0  ETHUSDT 2021-08-09 08:50:19.574  2960.49
    symbol                    Time    Price
0  ETHUSDT 2021-08-09 08:50:20.060  2960.33
    symbol                    Time    Price
0  ETHUSDT 2021-08-09 08:50:20.060  2960.33

最后两个输出是一样的。有没有办法避免这种情况,因为我要将数据框保存到 sqlite 数据库并且不想重复行。

【问题讨论】:

    标签: python api websocket binance


    【解决方案1】:

    这对我有用。

    async def main():
    async with bsm.individual_symbol_ticker_futures_socket(symbol='ETHUSDT') as socket:
        while True:
            msg = await socket.recv()
            frame = createframe(msg)
            print(frame)
    
    if __name__ == "__main__":
    await main()
    

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。

      现在不确定它是否与您相关,但这是我的解决方案。

      我发现,如果我用 await socket.__aenter__() 注释掉该行,我将不会收到重复的值,并且从测试来看,这似乎有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多