python /django处理用户超时的方式,以秒为单位(如果需要,也可以是分钟)



最接近我的例子是一个Django ajax聊天应用程序。房间需要保存活跃用户的列表。除了在聊天中显示用户列表外,给定的房间可能有最大数量的活跃用户;如果没有空间,需要阻止新用户进入。

目前我有聊天客户端页面通过ajax调用民意调查视图每秒钟。民意调查视图返回房间的文本。我认为poll也可以执行某种类型的ping操作——将用户添加到Room对象上的active_user M2M字段(到目前为止,我已经完成了所有这些操作)。我接下来需要的是在某种超时后将用户从active_user列表中删除。

我想有两种方法可以做到这一点,我想知道哪种方法对需要精确到秒(或十/十五秒)的应用程序更有效:
  • 使用cookie/会话/中间件来处理这个线程(然而,在我看来,这种方法不适合即时信息
  • 另一个模型,例如一个显式的Users_Rooms 'through'表,带有一个datetime字段,用于创建时更新的时间和每个ping之后的时间,并编写一些函数来清理旧的

这就是我能想到的。我只是想弄清楚每个房间的每个用户每秒都访问mySQL是否是个好主意,并且想知道这一秒是否确实是该任务的最佳选项。谢谢!

我将使用会话并存储最后一个ping datetime作为会话参数。不要担心数据库命中,如果在某个时刻您觉得命中次数太多,只需将会话存储切换到缓存即可。

使您的应用程序对缓存刷新具有健壮性。

我的一个朋友曾经在一个相当标准的虚拟专用服务器上托管一个相对流行的基于django的社交网络游戏,在他被迫切换到基于缓存的会话之前花了一段时间。

相关内容

最新更新