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
Другие вопросы по тегам