gpt4 book ai didi

python - Pyramid 烧杯 - 有没有办法创建一个不更新 session 时间戳的端点?

转载 作者:太空宇宙 更新时间:2023-11-04 03:28:01 26 4
gpt4 key购买 nike

在尝试在 30 秒不活动后在浏览器端实现自动注销时,我们考虑创建一个 /heartbeat 端点:

  • 当用户移动鼠标或键入任意键时,系统会在 10 秒后安排一个 javascript 回调,以调用 PUT/heartbeat
  • 如果已经安排了回调,则取消前一个回调 - 这样做是为了避免在用户连续键入和/或移动鼠标时(例如,写作内容)。
  • 然后,每隔 60 秒,发出一个 GET/heartbeat - 检查自上次用户 session “更新”以来已经过去了多长时间。我们可以通过检查烧杯 session 表的内容来做到这一点。如果超过 30 分钟,端点会向 Javascript 返回适当的指示,因此用户会自动在浏览器中注销。

这会工作得很好,除了一个小缺陷 - GET/heartbeat 更新烧杯 session 时间戳...

所以,问题是 - 在 Pyramid/Beaker 下,有没有办法创建一个不更新 session 时间戳的端点?

最佳答案

我最终做的是创建自己的 BeakerSessionFactoryConfig,以及 session_factory_from_settings(实例化 BeakerSessionFactoryConfig)。

然后我修改了您在这里看到的内容(对 self.persist() 的调用)https://github.com/Pylons/pyramid_beaker/blob/6a62134bf99ff8d0836ccc0f6be557b816fa9987/pyramid_beaker/init.py#L32是基于是否在请求对象上设置了某个属性的条件操作。

这是有效的,因为只要 .persists() 未被调用, session “上次访问”时间戳就不会在数据库(或您正在使用的任何其他存储)中更新。

关于python - Pyramid 烧杯 - 有没有办法创建一个不更新 session 时间戳的端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32244326/

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