【发布时间】: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