Подключение к потоку после обрыва связи WebSocketApp
Я создал класс для получения потоковых данных с биржы. При обрыве связи появляется ошибка
[WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера
и соединение закрывается.
Не могу разобраться, как сделать так, чтобы соединение не закрывалось, а постоянно пыталось подключиться до установления соединения.
import threading
import websocket
import json
import time
streams = ['bnbbusd@bookTicker']
class MyWebSocket(threading.Thread):
def __init__(self, streams):
super(MyWebSocket, self).__init__(daemon = True)
self.__streams = streams
self.__ws = websocket.WebSocketApp("wss://stream.binance.com:9443/ws", on_open = self.__ws_open,
on_message = self.__ws_message,
on_error = self.__ws_error,
on_close = self.__ws_close)
self.__update_streams_event = threading.Event()
def run(self):
self.__ws.run_forever()
def __ws_error(self, __ws, err):
print(err)
def __ws_close(self, __ws, close_status_code, close_msg):
print('Close', close_status_code, close_msg)
def __ws_open(self, __ws):
data = {
"method": "SUBSCRIBE",
"params": self.__streams,
"id": 1,
}
self.__ws.send(json.dumps(data))
def update_streams(self, streams):
self.__streams = streams
self.__update_streams_event.set()
def __ws_message(self, __ws, message):
msg = json.loads(message)
print(msg)
if self.__update_streams_event.is_set():
self.__ws_open(self.__ws)
self.__update_streams_event.clear()
def main():
global streams
th = MyWebSocket(streams)
th.start()
while True:
time.sleep(5)
print('--------', streams, len(streams))
streams.append('btcbusd@bookTicker')
streams = list(set(streams))
th.update_streams(streams)
if __name__ == "__main__":
main()