Python Переполнение стека переполнения стека клиента WebSocket - PullRequest
0 голосов
/ 16 марта 2020

Я создал класс для клиента 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}')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...