嗨,我对任何异步编码都是陌生的,因此很棒的django-channels官方库对我有些困惑。
我能够在发送消息时定义ORM流程,以将消息保存到db。那很容易。
但是,假设有5000个用户同时发送消息。即使我使用芹菜任务队列,数据库也很容易过载。另外,数据库可以在短时间内轻松地累积数百万行。
我想有一种方法可以收集通道层中所有挥之不去的消息,并在层关闭时(最后一个用户退出,websocket连接= 0),将它们保存到JsonField中作为一行?
TLDR:如何检查层终止,然后如何获取所有消息?它们在哪里存储在内存中?
天真的方法的当前思路:为每个通道创建一个内存寄存器(如数据库,但仅在内存中),并将所有消息发送时放置在那里。然后,当websocket终止时,触发保存代码。但是,如何创建这种仅在内存中存在的假数据库?
感谢所有建议!