gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:09:43 24 4
gpt4 key购买 nike

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

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

我想有两种方法可以做到这一点,我想知道对于需要精确到秒(或十/十五秒)的应用程序来说,哪种方法更有效:

  • 使用 cookies/session/middleware a la this thread (但是在我看来,这种方法不适用于即时信息
  • 另一种模型,例如带有日期时间字段的显式 Users_Rooms“直通”表,该表在创建时会更新,每次 ping 后都会更新,并编写一些函数来清除旧表

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

最佳答案

我将使用 session 并将最后一次 ping datetime 存储为 session 参数。不要担心数据库命中,如果在某个时候你会觉得你得到了太多,只需将你的 session 存储切换到 cache .

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

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

关于Pythonic/djangonic 以秒为单位处理用户超时的方式(如果需要的话,也可以以分钟为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8074588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com