Django app websocket connected client получает пустой набор даже после активного соединения в обработчике соединения

Я создаю приложение django, оно имеет следующую архитектуру.

  • apps.py
  • handlers.py
  • signals.py
  • views.py
  • urls.py

urls.py - Содержит конечную точку, в которой у меня есть класс представления из views.py. Я перехватываю там данные POST-запроса, эта конечная точка действует как веб-хук.

views.py - Класс представления с методом post, который обрабатывает входящие данные в конечную точку webhook. После получения данных я запускаю сигнал с помощью data.

signals.py - В нем есть объект Signal, созданный для пользовательского сигнала.

handlers.py - Имеет реализацию websockets пакета, имеет подключенные клиенты в self.clients свойстве.

apps.py - Внутри этого метода ready я инициализирую WebSocketServer класс из handlers.py, причем на заданном порту в отдельном потоке.

Код Handler.py

`импорт asyncio импорт websockets import json

from django.dispatch import receiver

from docapp.signals import gia_service_webhook_signal

class WebSocketServer: instance = None # Переменная класса для хранения экземпляра singleton clients = set() # Набор подключенных клиентов

`

** Проблема: **

При обращении к self.clients я получаю пустой набор, когда вызываю self.send_to_clients(data) в обработчике сигнала. В методе handle_connection я получаю подключенного клиента и его объект. Мне нужна помощь в устранении неполадок, у меня ушел день на то, чтобы разобраться, но пока не получается.

Я попробовал удалить reuse_address=True из формы websocket.serve, но это привело к другой ошибке - адрес уже используется. Поместил журналы, чтобы выяснить, почему self.clients пуст, но безуспешно.

У меня django 5.0.8, python 3.11, websockets==13.1

Вернуться на верх