tornado中Session基本框架
阿新 • • 發佈:2019-01-02
class Session(object): #request_handler_obj為當前RequestHandler物件的self引數# def __init__(self, request_handler_obj): # 先判斷使用者的session_id是否存在 self._request_handler = request_handler_obj self.session_id = request_handler_obj.get_secure_cookie("session_id") # 如果不存在session_id,生成session_id if not self.session_id: self.session_id = uuid.uuid4().hex self.data = {} request_handler_obj.set_secure_cookie("session_id", self.session_id) # 如果存在session_id, 去redis中取出data else: try: json_data = request_handler_obj.redis.get("sess_%s" % self.session_id) except Exception as e: logging.error(e) raise e if not json_data: self.data = {} else: self.data = json.loads(json_data) #在需要儲存資料的地方呼叫save方法# def save(self): json_data = json.dumps(self.data) try: self._request_handler.redis.setex("sess_%s" % self.session_id, SESSION_EXPIRES_SECONDS, json_data) except Exception as e: logging.error(e) raise e #清除redis中的session_id# def clear(self): try: self._request_handler.redis.delete("sess_%s" % self.session_id) except Exception as e: logging.error(e) self._request_handler.clear_cookie("session_id")