为Flask缓存一个大对象并从缓存中快速读取

3

我尝试使用flask-cache 缓存一个大约800MB的对象,代码如下:

@cache.memoize(50000)
def get_nmf_result():
    return NMF_Recommendation(basis_path = app.config['BASIS_PATH'],
                              coef_path = app.config['COEF_PATH'],
                              mask_path = app.config['MASK_PATH'])

但我发现 (1) 进行缓存需要相当长的时间。

(2) 即使我进行了缓存,从缓存中读取仍需要相当长的时间。这是否意味着当我读取缓存时,实际上我得到的是缓存的 拷贝而不是引用

有没有人对快速存储和缓存读取有想法? 谢谢!


你使用哪种缓存后端?将数据存储在内存中的那些更快,但在你的情况下,它们会消耗大量内存。你真的需要缓存这么大量的数据吗? - Audrius Kažukauskas
1个回答

4

Flask-Cache使用Werkzeug缓存,它使用pickling库将任何缓存值序列化为二进制数据块,以便该值可以保存在任何后端中。如果要pickle和unpickle 800MB大小的对象,可能需要花费很长时间,特别是如果它不仅仅是一个大字符串或像那样“简单”的东西。

此时,我认为最好编写自己的缓存,以适应您使用的后端和存储的数据类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接