Цель: предоставить конечному пользователю количество «уведомлений» в (почти) реальном времени.
Для простоты уведомления должны приходить, когда пользователь X отправляет форму XYZ, а все остальные пользователи должны видеть, что количество уведомлений увеличивается на 1 (если пользователь Y видит число 50, это означает, что имеется 50 НОВЫХ форм XYZ).
Вопрос № 1: с учетом моего веб-сокета на каналах django, где я должен выполнить итерацию, чтобы получить результат? На данный момент я поместил его в websocket_connect с бесконечным циклом, таким образом:
class EchoDiscussionNotificationConsumer(AsyncConsumer):
async def websocket_connect(self, event):
await self.send({
"type": "websocket.accept",
})
# NOT SURE THIS IS A GOOD DESIGN!
while True:
await asyncio.sleep(2)
rand = random.randint(1,100)
mesg = "#"+str(rand)
await self.send({
'type': 'websocket.send',
'text': mesg,
})
Это прекрасно работает, но я не думаю, что это хороший дизайн.
Вопрос № 2: Я не хочу запрашивать БД каждые 2 секунды. Я имел в виду, что должен запрашивать только когда (1) пользователь входит в систему и (2) другой пользователь отправляет форму XYZ. Поэтому, как только у меня есть «таблица уведомлений» из БД, где я должен хранить ее (в памяти), чтобы иметь более быстрый доступ? (сеанс?)