【问题标题】:Stale session stores with webapp2 in GAE for Python在 GAE for Python 中使用 webapp2 的过时会话存储
【发布时间】:2016-06-05 23:25:49
【问题描述】:

我有一个 GAE Python 应用程序,它将会话数据存储在通过 webapp2_extras.sessions.get_store(request=self.request) 获得的 SessionStore 对象中。

当我没有关闭浏览器时,我看到会话持续了好几天,但我突然想到,作为应用程序的管理员,我无法清除服务器中陈旧的 SessionStore 对象,也就是说,当一个用户浏览器关闭后将不再访问的数据。

这是我在 GAE 上运行的应用程序中的内存泄漏,还是 GAE 或 WEBAPP2 有一些策略来识别过时的会话并释放该内存?我在 GAE/WEBAPP2 文档中找不到答案,因此,如果您有提供答案的链接,将不胜感激。

【问题讨论】:

    标签: google-app-engine session webapp2 google-app-engine-python


    【解决方案1】:

    您可以使用webapp2_extras.sessions.default_config 配置会话存储的过期时间:

    session_max_age:默认会话过期时间(以秒为单位)。 限制 cookie 内容的持续时间,即使会话 cookie 存在。如果为 None,则内容会与 cookie 一样长 有效的。默认为无。

    现在,如果您想自己处理过期问题, 识别陈旧会话的策略可能是将时间戳存储在 cookie 或会话数据中,并在每个页面请求上检查它。如果您想使会话过期,请致电self.session.clear()

    【讨论】:

    • 抱歉,我投了反对票,布伦特。我最初的阅读是,这只会设置 cookie 的过期时间,特别是考虑到您的策略建议,我认为这不起作用,因为应用程序可能永远不会有机会调用 clear()。但是在重新阅读后,您列出的参数似乎确实在服务器中设置了会话超时,因此即使策略注释似乎没有,也可以满足我的原始要求。不幸的是,我使用了错误的投票,除非您对答案进行一些编辑,否则无法更改它。感谢您的帮助,再次抱歉。
    • 我明确了策略选项
    猜你喜欢
    • 2014-10-03
    • 2015-03-16
    • 2012-08-15
    • 2013-02-09
    • 2014-08-04
    • 2012-11-13
    • 2012-12-14
    • 1970-01-01
    • 2016-02-28
    相关资源
    最近更新 更多