我正在学习一门关于全栈开发(Python2和谷歌应用引擎)的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对象,这样我就可以在不同的时间使用它的属性。
他解释说,每次请求时都会调用此函数。看起来它每次都在查询数据存储区。在真实的生产环境中,这是最具成本效益的方式吗?
发布于 2018-02-08 19:34:04
在第一次检查您共享的函数时,它看起来不像是在调用DataStore,因为我猜测read_secure_cookie是一个自定义函数,它可能类似于:
def read_secure_cookie(self,name):
cookie = self.request.cookies.get(name)
return cookie如果这是此函数的定义类型,则它使用webapp2 Cookies,而不是从DataStore读取。
在任何情况下,正如@Alex在对您的问题的评论中建议的那样,根据您的使用情形,您可以考虑使用Memcache,因为当许多不同的请求使用相同的数据存储数据时,它是推荐的工具。但是,如果使用cookies的主要目的是跟踪用户状态,这可能是绑定到每个连接的参数,因此在这里使用cookies可能是更好的解决方案。
https://stackoverflow.com/questions/48634005
复制相似问题