SSL not available

Рейтинг: 0Ответов: 0Опубликовано: 26.07.2025

Моя программа использует websocket модуль и WebSocketApp класс для соединения с Binance WebSocket API. Вот код с помощью которого я делаю это:

class WebSocketListener:
    def __init__(
            self,
            url: str = "wss://stream.binance.com:9443/ws/casper"
    ):
        self.__websocket = WebSocketApp(
            url=url,
            on_open=self.__on_open,
            on_message=self.__on_message,
            on_error=self.__on_error,
            on_close=self.__on_close
        )

    def launch_websocket(self):
        self.__websocket.run_forever()

До сих пор всё работало отлично: я ничего особенного не менял, просто перестало работать. Не могу запустить программу, потому что постоянно возникает эта ошибка при запуске:

Status code: 59; message: WebSocket error received: SSL not available.

WebSocketListener.__on_close() missing 2 required positional arguments: 'code' and 'msg'

Из моего callback метода:

@staticmethod
    def __on_error(ws: WebSocketApp, exception: Exception):
        raise CasperError(error={
            "msg": f"WebSocket error detected: {exception}",
            "code": StatusCodes.API_ERROR.value
        })

Впервые я столкнулся с этой ошибкой, когда писал проект на Linux (в PyCharm IDE). Решением стало создание нового проекта с локальным окружением и перенос всех скриптов туда. Это было довольно глупо, но, как по волшебству, ошибка на какое-то время исчезла, пока однажды не появилась снова, и создание нового проекта не помогло. Тогда я решил создать новый проект на Windows, но при запуске программы возникла та же ошибка. Теперь я не знаю, что делать, потому что запросы Rest API работают нормально, как и всё остальное. Похоже, что-то случилось с моим вебсокетом.

UPD: минимально необходимый код для воспроизведения ошибки:

import time
from queue import Queue
from threading import Event

from websocket import WebSocketApp


class WebSocketListener:
    def __init__(
            self,
            url: str = "wss://stream.binance.com:9443/ws/casper"
    ):
        self.__websocket = WebSocketApp(
            url=url,
            on_open=self.__on_open,
            on_message=self.__on_message,
            on_error=self.__on_error,
            on_close=self.__on_close
        )

    def __on_open(self, ws: WebSocketApp):
        print("WebSocket is open!")

    def __on_message(
            self,
            ws: WebSocketApp,
            ws_msg: str
    ):
        ...

    def __on_close(
            self,
            ws: WebSocketApp,
            code: int,
            msg: str
    ):
        print(f"WebSocket is closed. {code} {msg}")

    @staticmethod
    def __on_error(ws: WebSocketApp, exception: Exception):
        print(exception)

    def launch_websocket(self):
        self.__websocket.run_forever()

    def close_websocket(self):
        self.__websocket.close()
        self.__websocket = None


if __name__ == "__main__":
    ws_listener = WebSocketListener()
    ws_listener.launch_websocket()
    # waiting for a little bit for an error to occur
    time.sleep(4)

UPD requirements.txt:

certifi==2025.7.14
charset-normalizer==3.4.2
docopt==0.6.2
idna==3.10
pipreqs==0.4.13
requests==2.32.4
urllib3==2.5.0
yarg==0.1.10

Ответы

Ответов пока нет.