跟踪 webapp2 上的登录状态

Keeping track of login status on 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))

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

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

第一次检查您共享的函数时,它看起来不像是在调用 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 可能是更好的解决方案。