python:将编译的对象添加到备忘录中



我尝试将一个经常使用的备用对象添加到备忘录中。编译的对象确实永远不会改变。

cache.set(eq, compile(eq, '<string>', 'eval'), 365*24*60*60)

但获取以下错误消息:

不能泡菜&lt;类"代码'>:属性查找代码

是否有解决此问题或替代方法的解决方案?

您可以使用专门为内部对象序列化设计的元帅模块

cache.set(eq, marshal.dumps(compile(eq, '<string>', 'eval')), 365*24*60)
  ...
eval(marshal.loads(cache.get(eq)))

另外,您可以存储源

cache.set(eq, eq, 365*24*60)
   ...
eval(cache.get(eq))

无论哪种方式,您可能都需要评估从外部缓存检索的代码的潜在安全风险。

相关内容

  • 没有找到相关文章

最新更新