- 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()
- new = True
+
+ def mksession(self, req):
+ return session(threading.RLock())
+
+ def mkcookie(self, req, sess):
+ cookie.add(req, self.cookiename, sess.id,
+ path=self.path,
+ expires=cookie.cdate(time.time() + sess.expire))
+
+ def fetch(self, req):
+ now = int(time.time())
+ sessid = cookie.get(req, self.cookiename)
+ new = False
+ try:
+ if sessid is None:
+ raise KeyError()
+ sess = self._fetch(sessid)
+ except KeyError:
+ sess = self.mksession(req)
+ new = True