Google app engine 如何仅使用SID获取当前会话?

Google app engine 如何仅使用SID获取当前会话?,google-app-engine,session,gae-sessions,Google App Engine,Session,Gae Sessions,如何仅使用会话标识符(SID)检索会话?我正在使用 更新回应@David Underhill: 我已经按照你的建议做了,但在调试模式下,我得到了以下结果: Session:SID=None{}|但是它有db_键填充了一个字符串 这是我的密码: upload.py SID = self.request.get("SID") if not SID: return False from app.models.user import User user = User.get_current_user(

如何仅使用会话标识符(SID)检索会话?我正在使用

更新回应@David Underhill:

我已经按照你的建议做了,但在调试模式下,我得到了以下结果:
Session:SID=None{}|
但是它有
db_键
填充了一个字符串

这是我的密码:

upload.py

SID = self.request.get("SID")
if not SID:
return False

from app.models.user import User
user = User.get_current_user(SID)
def get_current_user(SID = None):
    if SID:
        session = Session(sid=SID)
    else:
        session = get_current_session()

    if session.has_key('account.logged'):
        return User.get(db.Key(session.get('user.key')))
    else:
        return False
user.py

SID = self.request.get("SID")
if not SID:
return False

from app.models.user import User
user = User.get_current_user(SID)
def get_current_user(SID = None):
    if SID:
        session = Session(sid=SID)
    else:
        session = get_current_session()

    if session.has_key('account.logged'):
        return User.get(db.Key(session.get('user.key')))
    else:
        return False
而且不存在

这是我饼干里的SID:

“mMumLZOCq5knTg9edaSjLD+P8XSSOHAQS9VYQPGDSO=1289155992_9C2C85C6931A7D133F7E1F0B9AE5502GAJ9CQB9CQEOVQ5HY2NVDW50LMXVZ2DLZXLZZLZLZLZLZLX1JYWD0MGIZYZYZYJNK1PISUXDELFLZLZLZLZYNKZYNK1VZYNK1VZLK1VZYK1VZYK1VZUK4VZUK4ZYK4K4K4VZUK4K4K4K4KZUK4K4KJJJJJJJJJJUK4K4K4K4K4K4K4K4K4K4K4K


我使用JavaScript和Flex从Cookie中获取此信息,然后将其以变量形式发送到Python。

要检索仅使用其SID的会话,请直接实例化
会话
类:

session = gaesessions.Session(sid="SID of the session you want")
如果希望仅使用会话ID检索会话,则该会话必须已持久化到数据存储或memcache。默认情况下,仅将小会话存储在安全cookie中,比memcache或数据存储快得多

要强制将特定会话保存到数据存储,您可以对会话对象调用
save(persit\u even\u,如果使用\u cookie=True)
。这将强制将其存储到数据存储/memcache,即使它通常只存储在cookie中。如果您只需要偶尔单独通过SID访问用户会话,那么这是最好的方法

如果您需要经常通过SID访问会话,那么您最好在配置时通过将
cookie\u only\u threshold=0
传递到
SessionMiddleware
来禁用cookie only机制-这将确保从不使用cookie,并且您的会话始终在数据存储中


这些详细信息和更多信息将在中详细记录。

查看我问题中的更新。仍然不起作用:s在执行
保存后,我只能尝试下一步cookie\u only\u threshold=0(如果使用\u cookie=True),会话应显示在数据存储中。您是否可以手动查询数据存储以查看会话是否存在?(如果您通常只使用cookie会话,那么它应该是唯一的一个)。好主意设置dirty=True(只有在会话中没有更改任何内容时才需要-因为您设置了user.key,所以不需要设置dirty)。是的,我签入数据存储查看器并退出。我真的不明白为什么我仍然无法通过sid获取会话..:sStrange;这对我有用。您是否可以发布一个小的代码示例来说明这个问题?(或者你的整个项目,如果你愿意分享,不想把一个小样本排除在外)太好了,很高兴你能修复它。