跟踪webapp2上的登录状态

时间:2018-02-06 01:13:47

标签: python-2.7 google-app-engine google-cloud-datastore webapp2

我正在关注全栈开发(Python2和Google应用引擎)的Udacity课程,并在其中一个课程中,为了跟踪用户登录状态,教授使用以下功能:

    def initialize(self, *a, **kw):
    webapp2.RequestHandler.initialize(self, *a, **kw)
    uid = self.read_secure_cookie('user_id')
    self.user = uid and User.by_id(int(uid))

此函数的目标是返回User对象,以便我可以在不同时间使用其属性。

他解释说,每个请求都会调用此函数。看起来它每次都在查询数据存储区。在真实的生产环境中,这是最经济有效的方法吗?

1 个答案:

答案 0 :(得分:1)

首次检查您共享的函数时,它看起来不像是调用DataStore,因为我猜read_secure_cookie是一个自定义函数,可能看起来像:

def read_secure_cookie(self,name):
        cookie = self.request.cookies.get(name)
        return cookie

如果这是此函数的定义类型,它正在使用webapp2 Cookies,而不是从DataStore读取。

在任何情况下,正如@Alex在您的问题的评论中建议的那样,根据您的使用案例,您可以考虑使用Memcache,因为当许多不同的请求使用相同的数据存储数据时,它是推荐的工具。但是,如果使用cookie的主要目的是跟踪用户状态,这可能是绑定到每个连接的参数,因此可能坚持使用cookie是一个更好的解决方案。