Как получить все сообщения (или данные) из группы в каналах django?
Я новичок в Django и пытаюсь работать над приложением для чата, используя Django Channels.
Недавно я столкнулся с проблемой, когда необходимо получить все данные (если таковые имеются), связанные с группой. Я искал в docs и других местах в поисках обходного пути, но не смог найти ничего полезного.
Можно ли взаимодействовать с базами данных Redis, связанными с используемыми слоями каналов, с помощью чего-то вроде клиента Redis для Python и получать данные таким образом? Или я должен попытаться хранить все вновь созданные сообщения отдельно для каждой группы в кэше?
(Я думаю, что последняя техника создаст ненужные накладные расходы, поскольку там будет дополнительная копия всех сообщений, связанных с группой)
Может ли кто-нибудь помочь мне с этой проблемой?
Спасибо, что прочитали!
Не знаю, где и как долго Redis хранит сообщения канала django, все сообщения в канале django доставляются один раз, и ответственность за их хранение лежит на пользователе..
В моем случае я хранил все сообщения в db, все, что вам нужно, это создать модель и создавать объекты этой модели, когда сообщение отправляется или передается в WebSocket... таким образом, вы можете иметь полный контроль над этими сообщениями без необходимости глубоко погружаться в django channel, смотрите фрагмент ниже из моего проекта, который может помочь вам
# Receive message from WebSocket
async def receive(self, text_data):
text_data_json = json.loads(text_data)
print("scope user", self.scope['user'])
message = self.scope['user'].first_name + " " + str(date.today()) + " " + str(datetime.now().time())[0:5] + '\n' + text_data_json['message']
# Saving the sent msg into Chat_LoadModel
msg_id = await create_chat(room_name=self.room_name, message=message, sent_by=self.scope['user'],
channel_name=self.channel_name)