首页 > 解决方案 > websocket多流python

问题描述

这是我的问题:我正在尝试使用 websocket 在 Binance 上获得三对加密货币的价格

我的问题是我很难管理有多个流(来自三对)的事实,而只有一个流则效果很好。

这是我的代码:

import websocket, json, pprint, talib, numpy

cc = ["btcusdt","adausdt","solusdt"]
interval = "1m"


for i in cc:
    socket = f'wss://stream.binance.com:9443/ws/{i}@kline_{interval}'
    
    def on_message(ws, message):
        json_message = json.loads(message)
        candle = json_message['k']
        close = candle["c"]
        print(i,': ',close)

    def on_close(ws):
        print("Connection Closed")


    wsapp = websocket.WebSocketApp(socket, on_message=on_message, on_close=on_close)
    wsapp.run_forever()

这是我每秒得到的结果:

btcusdt :  47009.01000000
btcusdt :  47009.02000000
btcusdt :  47004.00000000
...

然而这不是我想要的,它只考虑第一对。我正在寻找这种结果:

btcusdt : #price
adausdt : #price
solusdt : #price
btcusdt : #price
adausdt : #price
solusdt : #price
...

我知道我的问题来自于,wsapp.run_forever()因为这样做只需要第一对而不循环到其他对。但我不知道如何管理它,如果有人能解决这个问题,我会很高兴。

非常感谢

标签: pythonapiwebsocketbinance

解决方案


推荐阅读