Binance API和python-binance提供异步(async)功能以进行非阻塞执行,如Binance的Async基础知识所讨论。
我正在使用BinanceSocketManager
(异步非阻塞)监听通过websocket传输的实时数据。
在网络断网的情况下,我希望将自动重新连接的功能添加到我的项目中。但是我无法在BinanceSocketManager
中找到任何信息。我只能找到指南,它使用了ThreadedWebsocketManager
,但这不是一个异步实现。
有人知道如何实现Binance websocket断开检测和自动重新连接机制吗?
这里是我目前的一些代码:
import asyncio
from binance import AsyncClient, BinanceSocketManager
async def main():
client = await AsyncClient.create()
await kline_listener(client)
async def kline_listener(client):
bm = BinanceSocketManager(client)
async with bm.kline_socket(symbol='BTCUSDT') as stream:
while True:
res = await stream.recv()
print(res)
# a way detect websocket error/disconnect, callback 'disconnect_callback'
async def disconnect_callback():
await client.close_connection()
await main() # restart client and kline socket
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())