def Decoder(self, raw):
"""Safe Unpickling.
Unpickle only safe primitives like tuples, dicts and
strings. Specifically does not allow arbitrary instances to be
recovered.
"""
now = time.time()
unpickler = cPickle.Unpickler(cStringIO.StringIO(raw))
unpickler.find_global = None
try:
decoded = unpickler.load()
except Exception:
raise io_manager.DecodeError("Unable to unpickle cached object")
result = self.renderer.decoder.Decode(decoded)
self.session.logging.debug("Decoded in %s sec.", time.time() - now)
return result
评论列表
文章目录