如何在GAE中有效实施会话?

时间:2008-10-24 22:25:23

标签: google-app-engine session memcached

我想知道为我正在工作的GAE应用程序实现我自己的会话(更多用于练习而不是其他任何东西)......起初我正在考虑使用数据存储来存储会话数据。但是,每次需要将某些内容添加到会话“存储桶”时,都需要保存到数据存储区。显然这很糟糕,因为我们希望最小化写入。然后我想到使用memcache ......似乎是一个好主意,但后来我们面临着由于memcache被“内存压力驱逐”而导致会话损坏的问题。那么这是否意味着我们只剩下以下选项:

  1. 将所有会话数据存储在Cookie中
  2. 将所有会话数据写入数据存储区和内存缓存区,然后只读取内存缓存区
  3. 任何人都有其他想法吗?

3 个答案:

答案 0 :(得分:5)

更新 - 2011年3月21日

在此回答时 app-engine-patch已停止 gaeutilities offer worst features而不是 gae-sessions 。< / p>

答案 1 :(得分:3)

我建议在推出自己的会议之前检查(并参与)这三种appengine会话的实现:

您的选项看起来不错,但在它们之间进行选择可能取决于应用程序中会话数据的大小。

答案 2 :(得分:0)

如果您使用web2py(版本1.46或更高版本),则会在GAE上默认启用会话。 这是通过脚手架模型顶部的以下三行web2py代码实现的:

from gluon.contrib.gql import *
db=GQLDB()
session.connect(request,response,db=db)

以下是一个重要的示例操作:

def index():
    session.c=session.c+1 if session.c else 1
    return dict(counter=session.c)