django频道在最后一个用户离开会议室后保存聊天记录

时间:2018-11-12 14:05:13

标签: websocket chat python-asyncio django-channels chatroom

嗨,我对任何异步编码都是陌生的,因此很棒的django-channels官方库对我有些困惑。

我能够在发送消息时定义ORM流程,以将消息保存到db。那很容易。

但是,假设有5000个用户同时发送消息。即使我使用芹菜任务队列,数据库也很容易过载。另外,数据库可以在短时间内轻松地累积数百万行。

我想有一种方法可以收集通道层中所有挥之不去的消息,并在层关闭时(最后一个用户退出,websocket连接= 0),将它们保存到JsonField中作为一行?

TLDR:如何检查层终止,然后如何获取所有消息?它们在哪里存储在内存中?

天真的方法的当前思路:为每个通道创建一个内存寄存器(如数据库,但仅在内存中),并将所有消息发送时放置在那里。然后,当websocket终止时,触发保存代码。但是,如何创建这种仅在内存中存在的假数据库?

感谢所有建议!

0 个答案:

没有答案