Google app engine 如何在GAE中有效地实施会话?

Google app engine 如何在GAE中有效地实施会话?,google-app-engine,session,memcached,Google App Engine,Session,Memcached,我想知道如何为我正在开发的GAE应用程序实现我自己的会话(更多的是为了一个练习,而不是其他任何东西)。。。起初,我考虑使用数据存储来存储会话数据。但是,每次需要将某些内容添加到会话“bucket”时,都需要将其保存到数据存储中。显然,这是不好的,因为我们想要最小化写操作。然后我考虑使用memcache。。。这似乎是一个好主意,但由于memcache被Google“通过内存压力逐出”,我们面临着可能的会话损坏问题。那么,这是否意味着我们只剩下以下选项: 将所有会话数据存储在cookie中 将所有会

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

  • 将所有会话数据存储在cookie中
  • 将所有会话数据写入数据存储和memcache,然后仅从memcache读取
  • 有人有其他想法吗?

    我建议在推出您自己的appengine sessions之前,先查看(并参与)这三种appengine sessions的实现:

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

    如果使用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)
    

    更新-2011年3月21日

    在回答此问题时,应用程序引擎修补程序已停止并且gae会话的GAEUTILIES

    • GitHub
    • 如何

    @Alexander Kojevnikov:看起来appengine实用程序链接已断开。另一个需要考虑的问题是:是可用的最快和最简单的实现。以下是可用库的比较: