Python GAE用户服务对象-是否创建局部变量?

Python GAE用户服务对象-是否创建局部变量?,python,performance,google-app-engine,optimization,Python,Performance,Google App Engine,Optimization,所以。。。使用谷歌应用引擎用户服务 我是否应该创建一个本地用户对象: 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 =

所以。。。使用谷歌应用引擎用户服务

我是否应该创建一个本地用户对象:

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个调用,这是可以的。

对于每个请求,本地范围的用户对象应该是合适的

确保my_用户是线程和当前请求的本地用户:

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

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


很抱歉编辑的。。。。忘了换衣服了,谢谢你的信息。在我害怕之前,如果我的_用户在def get()中的请求处理程序中,那么是否可以进行全局访问?我可能遗漏了什么。我认为每个请求处理程序都有自己的线程,每个请求都有自己的线程。如果我的用户在def get()中,那么您就很好了。如果它是外部的和全球性的,你可能会遇到问题。没有使用当然不是全球性的。我永远不会那样做,那只会是真正的压力测试。