我有一个巨大的python字典,我想保存到redis缓存中,然后让API处理程序直接从缓存返回这个字典
在存储到缓存之前,我首先使用gzip
压缩字符串化的dict
transformed_object = {...big dictionary}
byte_object = BytesIO()
data = json.dumps(transformed_object)
with gzip.GzipFile(fileobj=byte_object, mode="w") as f:
f.write(data.encode())
final_data = byte_object.getvalue()
我把它写到Redis缓存中
context.redis.set(COMPLETE_GZIPPED_CACHE, final_data)
我有一个API处理程序,希望在其中返回gzip数据
cache_list = redis.get(COMPLETE_GZIPPED_CACHE)
self.finish(
{
"status": True,
"cache_list": cache_list,
"updated_at": datetime.datetime.now(),
}
)
问题是我得到了下面的错误
TypeError: Object of type 'bytes' is not JSON serializable
在返回前端之前,是否需要先将字节解码回字符串?理想情况下,我希望前端处理解码
有更好的方法吗
从其他帖子中找到了答案——编写了这样一个函数并选择使用
zlib
这会将其作为ascii字符串保存到redis。然后在前端使用
pako.js
将上述内容解码为可读字符串相关问题 更多 >
编程相关推荐