Каналы Django отправляют сообщение всем подключенным пользователям
Я хочу отправлять случайно сгенерированное сообщение каждому клиенту, посещающему страницу. На данный момент я могу подключить только одного клиента. Когда я пытаюсь подключиться с другой вкладки, выдает ошибку.
Как я уже сказал, одно соединение работает, но моя цель - иметь несколько соединений, которые получают одно и то же сообщение.
Application instance <Task pending name='Task-173' coro=<StaticFilesWrapper.__call__() running at /Users/username/React/app/venv/lib/python3.9/site-packages/channels/staticfiles.py:44> wait_for=<Future pending cb=[_chain_future.<locals>._call_check_cancel() at /usr/local/Cellar/python@3.9/3.9.13_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/futures.py:384, <TaskWakeupMethWrapper object at 0x10c15c5e0>()]>> for connection <WebSocketProtocol client=['127.0.0.1', 50618] path=b'/ws/dice'> took too long to shut down and was killed.
Мой Consumers.py выглядит следующим образом:
import json
from random import randrange
from channels.generic.websocket import JsonWebsocketConsumer
from asgiref.sync import async_to_sync
from datetime import *
import time
class DiceConsumer(JsonWebsocketConsumer):
def connect(self, immediately=True):
self.room_group_name = 'example_room'
self.accept()
while True:
if datetime.now().strftime('%S') != '00':
self.send(
json.dumps({'action': "nothing", 'time': datetime.now().strftime('%S')}))
elif datetime.now().strftime('%S') == '00':
self.send(json.dumps(
{'action': "start dice", 'winning_value': randrange(1, 6)}))
time.sleep(1)
def disconnect(self, code):
return super().disconnect(code)