Flask-cache为int和long参数生成不同的键

时间:2015-12-31 09:08:39

标签: python caching flask flask-cache

Flask-cache使用函数参数来生成缓存键,但它为long和int类型参数设置了不同的键:

@cache.memoize(3600)
def foo(a):
    return a

foo(1)foo(1L)将生成不同的缓存键,我该怎么做才能将其返回值分配给同一缓存键?

1 个答案:

答案 0 :(得分:0)

您可以通过子类将整数转换为long。

例如

class CustomCache(Cache):
    def _memoize_kwargs_to_args(self, f, *args, **kwargs):
        keyargs, keykwargs = super(CardCache, self) \
            ._memoize_kwargs_to_args(f, *args, **kwargs)

        new_args = []
        for arg in keyargs:
            if isinstance(arg, numbers.Integral):
                arg = long(arg)
            new_args.append(arg)

        return tuple(new_args), keykwargs