【发布时间】:2019-03-26 09:41:51
【问题描述】:
我正在使用PyMemoize 库来缓存协程。我装饰了协程,但是当 Python 调用它时,我得到:
TypeError: can't pickle coroutine objects
这是因为PyMemoize 在内部尝试腌制协程并将其存储在 Redis 中。为此,它使用shelve.Shelf,而后者又使用pickle。问题是,不知什么原因,pickle 不支持酸洗协程。
我尝试使用dill 腌制协程,并且成功了。如何告诉shelve 使用dill 作为序列化后端?
我试过猴子补丁shelve,但没有成功(我不知道为什么):
import shelve
from dill import Pickler, Unpickler
shelve.Pickler = Pickler
shelve.Unpickler = Unpickler
【问题讨论】:
标签: python pickle coroutine shelve dill