金字塔烧杯 - 有没有办法创建一个不更新会话时间戳的端点?

Pyramid beaker - is there a way to create an endpoint that doesn't update the session timestamp?

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

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

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

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

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

这是有效的,因为只要不调用 .persists(),会话 "last accessed" 时间戳就不会在数据库(或您正在使用的任何其他存储)中更新。