Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » Подключение к потоку после обрыва связи WebSocketApp [RSS Feed]

#1 Июль 8, 2022 23:18:16

Mars111
Зарегистрирован: 2020-05-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Подключение к потоку после обрыва связи 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()

Отредактировано Mars111 (Июль 8, 2022 23:18:56)

Офлайн

#2 Июль 10, 2022 08:11:04

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2584
Репутация: +  60  -
Профиль   Отправить e-mail  

Подключение к потоку после обрыва связи WebSocketApp

Может наведет вас на мысль
https://python.su/forum/topic/41696/



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

  • Начало
  • » Network
  • » Подключение к потоку после обрыва связи WebSocketApp[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version