【发布时间】:2019-05-17 19:08:05
【问题描述】:
我尝试将一个已编译的对象添加到经常使用的 Memcached。编译后的对象永远不会改变。
cache.set(eq, compile(eq, '<string>', 'eval'), 365*24*60*60)
但是得到以下错误信息:
无法腌制
:内置函数上的属性查找代码失败
有没有解决这个问题的方法或替代方法?
【问题讨论】:
标签: python memcached python-memcached
我尝试将一个已编译的对象添加到经常使用的 Memcached。编译后的对象永远不会改变。
cache.set(eq, compile(eq, '<string>', 'eval'), 365*24*60*60)
但是得到以下错误信息:
无法腌制
:内置函数上的属性查找代码失败
有没有解决这个问题的方法或替代方法?
【问题讨论】:
标签: python memcached python-memcached
您可以使用专为内部对象序列化设计的 marshal 模块
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))
无论哪种方式,您都可能需要评估执行从外部缓存中检索到的代码的潜在安全风险。
【讨论】: