如何在GAE / Python应用程序中有新会话时如何触发函数?

时间:2012-08-23 19:01:47

标签: python google-app-engine

我是Google App Engine和Python的新手。

我想在新用户访问网站的任何时候在SessionSupplemental表(Kind)中创建一个条目(无论他们最初访问哪个页面)。

我该怎么做?

我可以想象GAE中有一个标准事件触发器列表;我会在哪里找到这些文件?我还可以想象有很多系统/应用程序属性;我在哪里可以找到这些文件以及如何使用它们?

感谢。

1 个答案:

答案 0 :(得分:0)

我想在这里做一般,因为我不知道你是否使用默认用户服务,我不知道你是如何将SessionSupplemental实体唯一链接到用户,或者你是否有办法此时识别用户。我还假设您正在使用某些版本的webapp,因为它是App Engine上的标准请求处理库。让我知道更多,我可以更新答案更具体。

  • 使用新类(例如MyRequestHandler)将webapp中的默认RequestHandler子类化。
  • 在您的子类中重写initialize()方法。
  • 在新的initialize()方法中,从会话系统(或用户服务或您正在使用的任何服务)获取当前用户。测试此用户是否已存在SessionSupplemental实体,如果没有,则创建一个新实体。
  • 对于所有其他请求处理程序,您现在想要继承MyRequestHandler(而不是默认的RequestHandler)。
  • 每当请求发生时,webapp会自动调用initialize()方法。
  • 这将花费您对每个请求的读取以及新用户的每个请求的写入。如果你使用ndb库(而不是db),那么很多请求只会命中memcache而不是数据存储区。

现在,如果您刚刚开始创建一个新的AppEngine应用程序,我建议您使用Python27运行时和webapp2并尝试尽可能多地利用webapp2 Auth模块,这样您就不必自己编写这么多会话内容了。此外,ndb可以比默认的db库好得多。