Pythonic / djangonic方式以秒为单位处理用户超时(如果需要,则为分钟)
作者:互联网
我的案例最接近的例子是Django ajax聊天应用程序.房间需要保留活跃用户列表.除了在聊天中显示该用户列表之外,给定房间可能具有最大活动用户数;如果没有空间,则需要阻止新用户进入.
目前我有聊天客户端页面每秒通过ajax调用一个民意调查视图.轮询视图返回房间的文本.我认为民意调查也可以进行某种类型的ping操作 – 将用户添加到Room对象上的active_user M2M字段(到目前为止我已经完成了所有这些操作).我接下来需要的是在某种超时后将用户从该active_user列表中删除的东西.
我想有两种方法可以做到这一点,我想知道对于需要精确到第二(或十/十五秒)的应用来说哪个更有效:
>使用cookie / sessions / middleware a la this thread(但在我看来,这种方法不适用于即时信息
>另一个模型,例如显式的Users_Rooms’到’表,其中包含创建时和每次ping后更新时间的日期时间字段,并编写一些清理旧的模型的函数
这就是我所能想到的.我只想弄清楚每个房间的每个用户是否每秒都能访问mySQL是一个好主意,并且想知道第二个确实是该任务的最佳选择.谢谢!
解决方法:
我将使用会话并将最后的ping datetime存储为会话参数.不要担心数据库命中,如果在某个时刻您会觉得自己获得的数据太多,只需将会话存储切换到cache.
使您的应用程序对缓存刷新具有强大的功能.
我的一个朋友曾经在一个非常标准的虚拟专用服务器上托管一个相对流行的基于django的社交网络游戏,并且在他被迫切换到基于缓存的会话之前花了一段时间.
标签:python,ajax,session,django,django-middleware 来源: https://codeday.me/bug/20190630/1336507.html