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