Python Flask缓存为int和long参数生成不同的键
Flask cache使用函数参数生成缓存键,但它为long和int类型参数生成不同的键:Python Flask缓存为int和long参数生成不同的键,python,caching,flask,flask-cache,Python,Caching,Flask,Flask Cache,Flask cache使用函数参数生成缓存键,但它为long和int类型参数生成不同的键: @cache.memoize(3600) def foo(a): return a foo(1)和foo(1L)将生成不同的缓存键,如何将它们的返回值分配给同一缓存键?您可以按子类将整数转换为long 例如 class CustomCache(Cache): def _memoize_kwargs_to_args(self, f, *args, **kwargs): ke
@cache.memoize(3600)
def foo(a):
return a
foo(1)
和foo(1L)
将生成不同的缓存键,如何将它们的返回值分配给同一缓存键?您可以按子类将整数转换为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