Я создал класс для клиента WebSocket, который открывается при непреднамеренном отключении. После нескольких отключений у меня переполнение стека Python.
- Почему у меня возникла эта проблема? Я думаю, что это происходит из-за бесконечного l oop, пытающегося воссоединиться, но это поведение предназначено
- Есть ли способ избежать этой проблемы? если да, то как? Если нет, то почему?
Любые комментарии будут высоко оценены. Я надеюсь, что это поможет другим
Вот мой класс:
import websocket
import json
class MyWebSocketClient(object):
def __init__(self, url):
self.url = url
self.connected = False
self.running = False
def start(self):
self.running = True
self.ws = websocket.WebSocketApp(
url=self.URL,
on_open=self.on_open,
on_message=self.on_message,
on_close=self.on_close,
on_error=self.on_error,
)
self.ws.run_forever()
def stop(self):
self.running = False
self.ws.keep_running = False
def send(self, data: dict):
data = json.dumps(data, separators=(",", ":"), indent=None)
self.ws.send(data)
def on_open(self):
logger.info('Connexion opened')
self.connected = True
def on_message(self, data):
logger.info(f'Data received: {data}')
def on_close(self):
logger.info(f'Connection closed')
self.connected = False
if self.running:
self.start()
def on_error(self, err):
logger.error(f'Error: {err}')