我不熟悉async
/await
,我遇到了一些困惑。是否应该对pickle
进行await
编辑?在
例如,假设我有以下async
类方法:
async def get(self, key):
redis = await self.getRedis()
data = await redis.get(key)
if not data:
return None
return pickle.loads(data)
async def set(self, key, value, ttlInSeconds):
pickled = pickle.dumps(value)
redis = await self.getRedis()
await redis.setex(key, pickled, ttlInSeconds)
如果我正在序列化或取消序列化一个大对象,pickle
上的整个循环块是不是?在实际应用中,对于较小的物体,这种瞬间阻塞是否可以接受?谢谢!在
您应该阻止进行pickling,因为如果类中的另一个方法在
set()
仍在处理pickle.dumps()
时执行并修改value
,则pickled数据将被损坏。在即使该对象一次只能有一个实例,也是如此。在
顺便说一句,在
get()
中,您可以将await
放在return pickle.loads(data)
中,因为您不太可能修改尚未从该方法返回的数据。在相关问题 更多 >
编程相关推荐