gae-sessions:按ID检索会话的语义

时间:2010-11-09 18:22:40

标签: google-app-engine

session = get_current_session()
a1 = session.has_key('account.logged') # is true
session2 = Session(sid=session.sid)
a2 = session2.has_key('account.logged') # is false

为什么a2不等于a1?

解决方案:必须将其保存到数据存储区: How to get current session with only the SID?

1 个答案:

答案 0 :(得分:1)

好问题。按会话ID(SID)检索会话要求会话存储在服务器上(在memcache或数据存储区中)。默认情况下,gae-sessions 将会话存储在安全的客户端Cookie中。这比将其存储到数据存储区甚至内存缓存要快得多(参见this article底部的性能比较部分)。

如果要通过SID检索会话,则必须强制将会话存储在服务器上。您可以通过关闭仅限cookie的会话(仅在需要经常通过SID检索时建议)或强制将特定会话存储在服务器端(通过传递persist_even_if_using_cookie=True to save())来完成此操作。更多详情here