- try:
- if sessid is None:
- raise KeyError()
- elif sessid in self.live:
- sess = self.live[sessid]
- else:
- sess = self.thaw(sessid)
- self.live[sessid] = sess
- if sess.atime + sess.expire < now:
- raise KeyError()
- sess.atime = now
- except KeyError:
- sess = session()
- self.live[sess.id] = sess
- sess.new = True
- req.oncommit(self.ckfreeze)
- return sess
-
- def ckfreeze(self, req):
- sess = self.get(req)
- if sess.dirty():
- try:
- if getattr(sess, "new", False):
- cookie.add(req, self.cookiename, sess.id, self.path)
- del sess.new
- self.freeze(sess)
- except:
- pass