Найти - Пользователи
Полная версия: Подключение к потоку после обрыва связи WebSocketApp
Начало » Network » Подключение к потоку после обрыва связи WebSocketApp
1
Mars111
Помогите, пожалуйста, разобраться.
Я создал класс для получения потоковых данных с биржы. При обрыве связи появляется ошибка

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()
ZerG
Может наведет вас на мысль
https://python.su/forum/topic/41696/
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB