GAE用户服务对象 - 是否创建本地变量?

时间:2012-12-17 23:43:17

标签: python performance google-app-engine optimization

所以...使用Google App Engine用户服务。

我应该创建本地用户对象:

my_user = users.get_current_user()
if not my_user:
    self.redirect(users.create_login_url(self.request.uri), abort=True)
    return
person = Person.get_current(my_user.user_id()) #Here

或随时从用户服务访问用户对象? :

my_user = users.get_current_user()
if not my_user:
    self.redirect(users.create_login_url(self.request.uri), abort=True)
    return
#...  code ...
person = Person.get_current(users.get_current_user().user_id()) #And here

还是其他什么? :

helping useres :-)

当然是为什么。用户服务的使用在资源上是否代价高昂?

2 个答案:

答案 0 :(得分:1)

本地调用总是更好地作为触发许多方法调用的调用。效率增益取决于代码调用它的频率。对于2个电话,没关系。

答案 1 :(得分:1)

对于每个请求,本地范围的用户对象应该没问题。

确保my_user是您的线程和当前请求的本地:

  • 如果它在不同的请求之间共享,则无法保证它实际上是发出请求的用户,除非您有一些单独的会话验证。

  • 不同的线程可以处理不同的请求,在这种情况下你会遇到上述问题。