Flask-кеш генерирует разные ключи для int и long параметров
Flask-cache использует параметры функции для генерации ключа кеша, однако он создает разные ключи для параметров типа long и int:
@cache.memoize(3600)
def foo(a):
return a
foo(1)
а также foo(1L)
будет генерировать разные ключи кеша, что я могу сделать, чтобы присвоить их возвращаемое значение одному и тому же ключу кеша?
1 ответ
Решение
Вы можете преобразовать целое число в длинный по подклассу.
например.
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