【问题标题】:Python: Add compiled object to MemcachedPython:将编译对象添加到 Memcached
【发布时间】:2019-05-17 19:08:05
【问题描述】:

我尝试将一个已编译的对象添加到经常使用的 Memcached。编译后的对象永远不会改变。

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

但是得到以下错误信息:

无法腌制 :内置函数上的属性查找代码失败

有没有解决这个问题的方法或替代方法?

【问题讨论】:

    标签: python memcached python-memcached


    【解决方案1】:

    您可以使用专为内部对象序列化设计的 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))
    

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

    【讨论】:

      猜你喜欢
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2020-12-03
      相关资源
      最近更新 更多