使用gae-sessions检索存储在其他会话中的信息

时间:2011-02-18 14:36:54

标签: python google-app-engine session

我使用gae-sessions建立了一个简单的登录系统,我想向登录用户显示登录用户数量以及他们是谁。

要计算登录的人数,当我在用户登录时,会立即使用save将会话保存到数据存储区(persist_even_if_using_cookie = True)。然后我使用SessionModel.all()。count()来检索登录帐户的数量。

我在检索其他会话的信息方面遇到了麻烦。我不知道怎么做。我试过这个:

logged_in = []
for activesession in SessionModel.all():
    logged_in.append(activesession['user'])

但是我收到了这个错误:

TypeError: 'SessionModel' object is unsubscriptable

我也尝试过activesession.get('user'),但它会导致另一个错误:

BadKeyError: Invalid string key user.

我该怎么做?

1 个答案:

答案 0 :(得分:2)

Session对象和SessionModel彼此分开。 SessionModel只存储会话的内容,不能像Session对象那样读取。

我觉得这是一个坏主意,你应该找到另一种方法来存储/检索登录用户列表。此方法可能会返回尚未删除的过期会话,并且可能会非常慢。

您要调用的方法是__decode_data。我觉得这样的事情会奏效:

for activesession in SessionModel.all():
    data = Session._Session__decode_data(activesession.pdump)
    logged_in.append(data['user'])