Джанго запоминать по запросу - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть приложение django rest, в котором есть функция, которая вычисляет что-то, используя некоторые внешние данные (из другого сервиса). Я хочу избежать загрузки, если не требуется.Эти данные регулярно меняются, но одинаковы для одного запроса.Поэтому я хочу кэшировать результат этой функции (так как она вызывается несколько раз в течение одного запроса) на время ровно одного запроса.Я сталкивался с библиотекой https://github.com/tvavrys/django-memoize/, которая кэширует результаты функции, но я могу указать только время, а не контекст, после которого кеш должен быть признан недействительным.

Одна возможность, которую я нашел разумной, -каким-то образом зарегистрировать хук, который очищает кеш после каждого запроса (используя delete_memoized), но я не нашел способа зарегистрировать такой хук.

Поэтому мой вопрос: возможно ли либо

  • выполнить некоторый код после обработки ответа (→ очистить кеш) или
  • сказать django кэшировать результат функции ровно для одного запроса (используя какую-то другую библиотеку?)

1 Ответ

0 голосов
/ 13 сентября 2018

Может быть, вам стоит попробовать cached_property

Декоратор @cached_property кэширует результат метода с Единственный аргумент себя как свойство. Кэшированный результат будет сохраняться как Пока экземпляр делает, так что если экземпляр передается и При последующем вызове функции будет возвращен кэшированный результат.

...