我尝试将一个经常使用的备用对象添加到备忘录中。编译的对象确实永远不会改变。
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))
无论哪种方式,您可能都需要评估从外部缓存检索的代码的潜在安全风险。